public class CosmosTemplate extends Object implements CosmosOperations, org.springframework.context.ApplicationContextAware
| Modifier and Type | Field and Description |
|---|---|
private com.azure.data.cosmos.CosmosClient |
cosmosClient |
private static String |
COUNT_VALUE_KEY |
private String |
databaseName |
private Function<Class<?>,CosmosEntityInformation<?,?>> |
entityInfoCreator |
private boolean |
isPopulateQueryMetrics |
private MappingCosmosConverter |
mappingCosmosConverter |
private ResponseDiagnosticsProcessor |
responseDiagnosticsProcessor |
| Constructor and Description |
|---|
CosmosTemplate(CosmosDbFactory cosmosDbFactory,
MappingCosmosConverter mappingCosmosConverter,
String dbName) |
| Modifier and Type | Method and Description |
|---|---|
private void |
applyVersioning(Class<?> domainType,
com.azure.data.cosmos.CosmosItemProperties cosmosItemProperties,
com.azure.data.cosmos.CosmosItemRequestOptions options) |
private void |
assertValidId(Object id) |
<T> long |
count(DocumentQuery query,
Class<T> domainType,
String containerName) |
long |
count(String containerName) |
com.azure.data.cosmos.CosmosContainerProperties |
createCollectionIfNotExists(CosmosEntityInformation<?,?> information)
Use createContainerIfNotExists() instead
|
com.azure.data.cosmos.CosmosContainerProperties |
createContainerIfNotExists(CosmosEntityInformation<?,?> information) |
<T> List<T> |
delete(DocumentQuery query,
Class<T> domainType,
String containerName)
Delete the DocumentQuery, need to query the domains at first, then delete the item
from the result.
|
void |
deleteAll(String containerName,
Class<?> domainType) |
void |
deleteById(String containerName,
Object id,
com.azure.data.cosmos.PartitionKey partitionKey) |
void |
deleteCollection(String containerName)
Use deleteContainer() instead
|
void |
deleteContainer(String containerName) |
private com.azure.data.cosmos.CosmosItemResponse |
deleteItem(com.azure.data.cosmos.CosmosItemProperties cosmosItemProperties,
List<String> partitionKeyNames,
String containerName,
Class<?> domainType) |
private reactor.core.publisher.Flux<com.azure.data.cosmos.FeedResponse<com.azure.data.cosmos.CosmosItemProperties>> |
executeQuery(com.azure.data.cosmos.SqlQuerySpec sqlQuerySpec,
String containerName,
com.azure.data.cosmos.FeedOptions options) |
<T> Boolean |
exists(DocumentQuery query,
Class<T> domainType,
String containerName) |
<T> List<T> |
find(DocumentQuery query,
Class<T> domainType,
String containerName) |
<T> List<T> |
findAll(Class<T> domainType) |
<T> org.springframework.data.domain.Page<T> |
findAll(org.springframework.data.domain.Pageable pageable,
Class<T> domainType,
String containerName) |
<T> List<T> |
findAll(com.azure.data.cosmos.PartitionKey partitionKey,
Class<T> domainType) |
<T> List<T> |
findAll(String containerName,
Class<T> domainType) |
<T> T |
findById(Object id,
Class<T> domainType) |
<T> T |
findById(Object id,
Class<T> domainType,
com.azure.data.cosmos.PartitionKey partitionKey) |
<T> T |
findById(String containerName,
Object id,
Class<T> domainType) |
<T,ID> List<T> |
findByIds(Iterable<ID> ids,
Class<T> domainType,
String containerName) |
private List<com.azure.data.cosmos.CosmosItemProperties> |
findItems(DocumentQuery query,
Class<?> domainType,
String containerName) |
String |
getCollectionName(Class<?> domainType)
Use getContainerName() instead
|
String |
getContainerName(Class<?> domainType) |
MappingCosmosConverter |
getConverter() |
private CosmosEntityInformation<?,?> |
getCosmosEntityInformation(Class<?> domainType) |
private Long |
getCountValue(DocumentQuery query,
boolean isCrossPartitionQuery,
String containerName) |
private List<String> |
getPartitionKeyNames(Class<?> domainType) |
<T> T |
insert(String containerName,
T objectToSave,
com.azure.data.cosmos.PartitionKey partitionKey) |
<T> T |
insert(T objectToSave,
com.azure.data.cosmos.PartitionKey partitionKey) |
<T> org.springframework.data.domain.Page<T> |
paginationQuery(DocumentQuery query,
Class<T> domainType,
String containerName) |
void |
setApplicationContext(org.springframework.context.ApplicationContext applicationContext) |
private <T> T |
toDomainObject(Class<T> domainType,
com.azure.data.cosmos.CosmosItemProperties cosmosItemProperties) |
<T> void |
upsert(String containerName,
T object,
com.azure.data.cosmos.PartitionKey partitionKey) |
<T> void |
upsert(T object,
com.azure.data.cosmos.PartitionKey partitionKey) |
<T> T |
upsertAndReturnEntity(String containerName,
T object,
com.azure.data.cosmos.PartitionKey partitionKey) |
private static final String COUNT_VALUE_KEY
private final MappingCosmosConverter mappingCosmosConverter
private final String databaseName
private final ResponseDiagnosticsProcessor responseDiagnosticsProcessor
private final boolean isPopulateQueryMetrics
private final com.azure.data.cosmos.CosmosClient cosmosClient
private Function<Class<?>,CosmosEntityInformation<?,?>> entityInfoCreator
public CosmosTemplate(CosmosDbFactory cosmosDbFactory, MappingCosmosConverter mappingCosmosConverter, String dbName)
public void setApplicationContext(org.springframework.context.ApplicationContext applicationContext)
throws org.springframework.beans.BeansException
setApplicationContext in interface org.springframework.context.ApplicationContextAwareorg.springframework.beans.BeansExceptionpublic <T> T insert(T objectToSave,
com.azure.data.cosmos.PartitionKey partitionKey)
insert in interface CosmosOperationspublic <T> T insert(String containerName, T objectToSave, com.azure.data.cosmos.PartitionKey partitionKey)
insert in interface CosmosOperationspublic <T> T findById(Object id, Class<T> domainType)
findById in interface CosmosOperationspublic <T> T findById(Object id, Class<T> domainType, com.azure.data.cosmos.PartitionKey partitionKey)
findById in interface CosmosOperationspublic <T> T findById(String containerName, Object id, Class<T> domainType)
findById in interface CosmosOperationspublic <T> void upsert(T object,
com.azure.data.cosmos.PartitionKey partitionKey)
upsert in interface CosmosOperationspublic <T> void upsert(String containerName, T object, com.azure.data.cosmos.PartitionKey partitionKey)
upsert in interface CosmosOperationspublic <T> T upsertAndReturnEntity(String containerName, T object, com.azure.data.cosmos.PartitionKey partitionKey)
upsertAndReturnEntity in interface CosmosOperationspublic <T> List<T> findAll(Class<T> domainType)
findAll in interface CosmosOperationspublic <T> List<T> findAll(String containerName, Class<T> domainType)
findAll in interface CosmosOperationspublic <T> List<T> findAll(com.azure.data.cosmos.PartitionKey partitionKey, Class<T> domainType)
findAll in interface CosmosOperationspublic void deleteAll(@NonNull
String containerName,
@NonNull
Class<?> domainType)
deleteAll in interface CosmosOperationspublic void deleteCollection(@NonNull
String containerName)
CosmosOperationsdeleteCollection in interface CosmosOperationscontainerName - container namepublic void deleteContainer(@NonNull
String containerName)
deleteContainer in interface CosmosOperationspublic String getCollectionName(Class<?> domainType)
CosmosOperationsgetCollectionName in interface CosmosOperationsdomainType - class typepublic String getContainerName(Class<?> domainType)
getContainerName in interface CosmosOperationspublic com.azure.data.cosmos.CosmosContainerProperties createCollectionIfNotExists(@NonNull
CosmosEntityInformation<?,?> information)
CosmosOperationscreateCollectionIfNotExists in interface CosmosOperationsinformation - cosmos entity informationpublic com.azure.data.cosmos.CosmosContainerProperties createContainerIfNotExists(CosmosEntityInformation<?,?> information)
createContainerIfNotExists in interface CosmosOperationspublic void deleteById(String containerName, Object id, com.azure.data.cosmos.PartitionKey partitionKey)
deleteById in interface CosmosOperationspublic <T,ID> List<T> findByIds(Iterable<ID> ids, Class<T> domainType, String containerName)
findByIds in interface CosmosOperationspublic <T> List<T> find(@NonNull DocumentQuery query, @NonNull Class<T> domainType, String containerName)
find in interface CosmosOperationspublic <T> Boolean exists(@NonNull DocumentQuery query, @NonNull Class<T> domainType, String containerName)
exists in interface CosmosOperationspublic <T> List<T> delete(@NonNull DocumentQuery query, @NonNull Class<T> domainType, @NonNull String containerName)
delete in interface CosmosOperationsT - query - The representation for query method.domainType - Class of domaincontainerName - Container name of databasepublic <T> org.springframework.data.domain.Page<T> findAll(org.springframework.data.domain.Pageable pageable,
Class<T> domainType,
String containerName)
findAll in interface CosmosOperationspublic <T> org.springframework.data.domain.Page<T> paginationQuery(DocumentQuery query, Class<T> domainType, String containerName)
paginationQuery in interface CosmosOperationspublic long count(String containerName)
count in interface CosmosOperationspublic <T> long count(DocumentQuery query, Class<T> domainType, String containerName)
count in interface CosmosOperationspublic MappingCosmosConverter getConverter()
getConverter in interface CosmosOperationsprivate Long getCountValue(DocumentQuery query, boolean isCrossPartitionQuery, String containerName)
private reactor.core.publisher.Flux<com.azure.data.cosmos.FeedResponse<com.azure.data.cosmos.CosmosItemProperties>> executeQuery(com.azure.data.cosmos.SqlQuerySpec sqlQuerySpec,
String containerName,
com.azure.data.cosmos.FeedOptions options)
private void assertValidId(Object id)
private List<com.azure.data.cosmos.CosmosItemProperties> findItems(@NonNull DocumentQuery query, @NonNull Class<?> domainType, @NonNull String containerName)
private com.azure.data.cosmos.CosmosItemResponse deleteItem(@NonNull
com.azure.data.cosmos.CosmosItemProperties cosmosItemProperties,
@NonNull
List<String> partitionKeyNames,
String containerName,
@NonNull
Class<?> domainType)
private <T> T toDomainObject(@NonNull
Class<T> domainType,
com.azure.data.cosmos.CosmosItemProperties cosmosItemProperties)
private void applyVersioning(Class<?> domainType, com.azure.data.cosmos.CosmosItemProperties cosmosItemProperties, com.azure.data.cosmos.CosmosItemRequestOptions options)
private CosmosEntityInformation<?,?> getCosmosEntityInformation(Class<?> domainType)
Copyright © 2020 Microsoft. All rights reserved.