Class CosmosTemplate

  • All Implemented Interfaces:
    CosmosOperations, org.springframework.beans.factory.Aware, org.springframework.context.ApplicationContextAware

    public class CosmosTemplate
    extends Object
    implements CosmosOperations, org.springframework.context.ApplicationContextAware
    Template class for cosmos db
    • Constructor Detail

      • CosmosTemplate

        public CosmosTemplate​(CosmosAsyncClient client,
                              String databaseName,
                              CosmosConfig cosmosConfig,
                              MappingCosmosConverter mappingCosmosConverter,
                              org.springframework.data.auditing.IsNewAwareAuditingHandler cosmosAuditingHandler)
        Initialization
        Parameters:
        client - must not be null
        databaseName - must not be null
        cosmosConfig - must not be null
        mappingCosmosConverter - must not be null
        cosmosAuditingHandler - can be null
      • CosmosTemplate

        public CosmosTemplate​(CosmosAsyncClient client,
                              String databaseName,
                              CosmosConfig cosmosConfig,
                              MappingCosmosConverter mappingCosmosConverter)
        Initialization
        Parameters:
        client - must not be null
        databaseName - must not be null
        cosmosConfig - must not be null
        mappingCosmosConverter - must not be null
      • CosmosTemplate

        public CosmosTemplate​(CosmosFactory cosmosFactory,
                              CosmosConfig cosmosConfig,
                              MappingCosmosConverter mappingCosmosConverter,
                              org.springframework.data.auditing.IsNewAwareAuditingHandler cosmosAuditingHandler)
        Initialization
        Parameters:
        cosmosFactory - must not be null
        cosmosConfig - must not be null
        mappingCosmosConverter - must not be null
        cosmosAuditingHandler - can be null
      • CosmosTemplate

        public CosmosTemplate​(CosmosFactory cosmosFactory,
                              CosmosConfig cosmosConfig,
                              MappingCosmosConverter mappingCosmosConverter)
        Initialization
        Parameters:
        cosmosFactory - must not be null
        cosmosConfig - must not be null
        mappingCosmosConverter - must not be null
    • Method Detail

      • setApplicationContext

        public void setApplicationContext​(org.springframework.context.ApplicationContext applicationContext)
                                   throws org.springframework.beans.BeansException
        Sets the application context
        Specified by:
        setApplicationContext in interface org.springframework.context.ApplicationContextAware
        Parameters:
        applicationContext - must not be null
        Throws:
        org.springframework.beans.BeansException - the bean exception
      • insert

        public <T> T insert​(T objectToSave,
                            PartitionKey partitionKey)
        Inserts item
        Specified by:
        insert in interface CosmosOperations
        Type Parameters:
        T - type class of domain type
        Parameters:
        objectToSave - must not be null
        partitionKey - must not be null
        Returns:
        the inserted item
      • insert

        public <T> T insert​(String containerName,
                            T objectToSave)
        Inserts item into the given container
        Specified by:
        insert in interface CosmosOperations
        Type Parameters:
        T - type class of domain type
        Parameters:
        containerName - must not be null
        objectToSave - must not be null
        Returns:
        the inserted item
      • insert

        public <T> T insert​(String containerName,
                            T objectToSave,
                            PartitionKey partitionKey)
        Inserts item into the given container
        Specified by:
        insert in interface CosmosOperations
        Type Parameters:
        T - type class of domain type
        Parameters:
        containerName - must not be null
        objectToSave - must not be null
        partitionKey - must not be null
        Returns:
        the inserted item
      • findById

        public <T> T findById​(Object id,
                              Class<T> domainType)
        Finds item by id
        Specified by:
        findById in interface CosmosOperations
        Type Parameters:
        T - type class of domain type
        Parameters:
        id - must not be null
        domainType - must not be null
        Returns:
        found item
      • findById

        public <T> T findById​(Object id,
                              Class<T> domainType,
                              PartitionKey partitionKey)
        Description copied from interface: CosmosOperations
        Finds item by id
        Specified by:
        findById in interface CosmosOperations
        Type Parameters:
        T - type class of domain type
        Parameters:
        id - must not be null
        domainType - must not be null
        partitionKey - must not be null
        Returns:
        found item
      • findById

        public <T> T findById​(String containerName,
                              Object id,
                              Class<T> domainType)
        Finds item by id
        Specified by:
        findById in interface CosmosOperations
        Type Parameters:
        T - type class of domain type
        Parameters:
        containerName - must not be null
        id - must not be null
        domainType - must not be null
        Returns:
        found item
      • upsert

        public <T> void upsert​(T object)
        Upserts an item with partition key
        Specified by:
        upsert in interface CosmosOperations
        Type Parameters:
        T - type of upsert object
        Parameters:
        object - upsert object
      • upsert

        public <T> void upsert​(String containerName,
                               T object)
        Upserts an item into container with partition key
        Specified by:
        upsert in interface CosmosOperations
        Type Parameters:
        T - type of upsert object
        Parameters:
        containerName - the container name
        object - upsert object
      • upsertAndReturnEntity

        public <T> T upsertAndReturnEntity​(String containerName,
                                           T object)
        Upserts an item and return item properties
        Specified by:
        upsertAndReturnEntity in interface CosmosOperations
        Type Parameters:
        T - type of upsert object
        Parameters:
        containerName - the container name
        object - upsert object
        Returns:
        upsert object entity
      • findAll

        public <T> Iterable<T> findAll​(Class<T> domainType)
        Find the DocumentQuery, find all the items specified by domain type.
        Specified by:
        findAll in interface CosmosOperations
        Type Parameters:
        T - class type of domain
        Parameters:
        domainType - the domain type
        Returns:
        found results in a List
      • findAll

        public <T> Iterable<T> findAll​(String containerName,
                                       Class<T> domainType)
        Find the DocumentQuery, find all the items specified by domain type in the given container.
        Specified by:
        findAll in interface CosmosOperations
        Type Parameters:
        T - class type of domain
        Parameters:
        containerName - the container name
        domainType - the domain type
        Returns:
        found results in a List
      • findAll

        public <T> Iterable<T> findAll​(PartitionKey partitionKey,
                                       Class<T> domainType)
        Description copied from interface: CosmosOperations
        Find the DocumentQuery, find all the items specified by domain type in the given container.
        Specified by:
        findAll in interface CosmosOperations
        Type Parameters:
        T - class type of domain
        Parameters:
        partitionKey - the partition key
        domainType - the domain type
        Returns:
        results in an Iterable
      • deleteAll

        public void deleteAll​(@NonNull
                              String containerName,
                              @NonNull
                              Class<?> domainType)
        Delete the DocumentQuery, delete all the items in the given container.
        Specified by:
        deleteAll in interface CosmosOperations
        Parameters:
        containerName - Container name of database
        domainType - the domain type
      • deleteById

        public void deleteById​(String containerName,
                               Object id,
                               PartitionKey partitionKey)
        Deletes the item by id and partition key.
        Specified by:
        deleteById in interface CosmosOperations
        Parameters:
        containerName - Container name of database
        id - item id
        partitionKey - the partition key
      • deleteEntity

        public <T> void deleteEntity​(String containerName,
                                     T entity)
        Deletes the entity
        Specified by:
        deleteEntity in interface CosmosOperations
        Type Parameters:
        T - type class of domain type
        Parameters:
        containerName - the container name
        entity - the entity object
      • findByIds

        public <T,​ID> Iterable<T> findByIds​(Iterable<ID> ids,
                                                  Class<T> domainType,
                                                  String containerName)
        Description copied from interface: CosmosOperations
        Find by ids
        Specified by:
        findByIds in interface CosmosOperations
        Type Parameters:
        T - type of domainType
        ID - type of ID
        Parameters:
        ids - iterable of ids
        domainType - type class
        containerName - the container name
        Returns:
        results in an Iterable
      • find

        public <T> Iterable<T> find​(@NonNull
                                    CosmosQuery query,
                                    @NonNull
                                    Class<T> domainType,
                                    String containerName)
        Finds the document query items
        Specified by:
        find in interface CosmosOperations
        Type Parameters:
        T - class of domainType
        Parameters:
        query - The representation for query method.
        domainType - Class of domain
        containerName - Container name of database
        Returns:
        All the found items as List.
      • exists

        public <T> Boolean exists​(@NonNull
                                  CosmosQuery query,
                                  @NonNull
                                  Class<T> domainType,
                                  String containerName)
        Checks if document query items exist
        Specified by:
        exists in interface CosmosOperations
        Type Parameters:
        T - class of domainType
        Parameters:
        query - The representation for query method.
        domainType - Class of domain
        containerName - Container name of database
        Returns:
        if items exist
      • delete

        public <T> Iterable<T> delete​(@NonNull
                                      CosmosQuery query,
                                      @NonNull
                                      Class<T> domainType,
                                      @NonNull
                                      String containerName)
        Delete the DocumentQuery, need to query the domains at first, then delete the item from the result. The cosmos db Sql API do _NOT_ support DELETE query, we cannot add one DeleteQueryGenerator.
        Specified by:
        delete in interface CosmosOperations
        Type Parameters:
        T - class of domainType
        Parameters:
        query - The representation for query method.
        domainType - Class of domain
        containerName - Container name of database
        Returns:
        All the deleted items as List.
      • findAll

        public <T> org.springframework.data.domain.Page<T> findAll​(org.springframework.data.domain.Pageable pageable,
                                                                   Class<T> domainType,
                                                                   String containerName)
        Description copied from interface: CosmosOperations
        Find all items in a given container with partition key
        Specified by:
        findAll in interface CosmosOperations
        Type Parameters:
        T - type of domainType
        Parameters:
        pageable - Pageable object
        domainType - the domainType
        containerName - the container name
        Returns:
        results as Page
      • runPaginationQuery

        public <T> org.springframework.data.domain.Page<T> runPaginationQuery​(SqlQuerySpec querySpec,
                                                                              org.springframework.data.domain.Pageable pageable,
                                                                              Class<?> domainType,
                                                                              Class<T> returnType)
        Description copied from interface: CosmosOperations
        Run the query.
        Specified by:
        runPaginationQuery in interface CosmosOperations
        Type Parameters:
        T - the type parameter
        Parameters:
        querySpec - the query spec
        pageable - the pageable
        domainType - the domain type
        returnType - the return type
        Returns:
        the Page
      • paginationQuery

        public <T> org.springframework.data.domain.Page<T> paginationQuery​(CosmosQuery query,
                                                                           Class<T> domainType,
                                                                           String containerName)
        Description copied from interface: CosmosOperations
        Pagination query
        Specified by:
        paginationQuery in interface CosmosOperations
        Type Parameters:
        T - type class of domainType
        Parameters:
        query - the document query
        domainType - type class
        containerName - the container name
        Returns:
        results as Page
      • sliceQuery

        public <T> org.springframework.data.domain.Slice<T> sliceQuery​(CosmosQuery query,
                                                                       Class<T> domainType,
                                                                       String containerName)
        Description copied from interface: CosmosOperations
        Slice query
        Specified by:
        sliceQuery in interface CosmosOperations
        Type Parameters:
        T - type class of domainType
        Parameters:
        query - the document query
        domainType - type class
        containerName - the container name
        Returns:
        results as Slice
      • runSliceQuery

        public <T> org.springframework.data.domain.Slice<T> runSliceQuery​(SqlQuerySpec querySpec,
                                                                          org.springframework.data.domain.Pageable pageable,
                                                                          Class<?> domainType,
                                                                          Class<T> returnType)
        Description copied from interface: CosmosOperations
        Run custom SQL query
        Specified by:
        runSliceQuery in interface CosmosOperations
        Type Parameters:
        T - the type parameter
        Parameters:
        querySpec - the query spec
        pageable - the pageable
        domainType - the domain type
        returnType - the return type
        Returns:
        the Page
      • count

        public long count​(String containerName)
        Description copied from interface: CosmosOperations
        Count
        Specified by:
        count in interface CosmosOperations
        Parameters:
        containerName - the container name
        Returns:
        count result
      • count

        public <T> long count​(CosmosQuery query,
                              String containerName)
        Description copied from interface: CosmosOperations
        Count
        Specified by:
        count in interface CosmosOperations
        Type Parameters:
        T - type class of domainType
        Parameters:
        query - the document query
        containerName - the container name
        Returns:
        count result
      • count

        public <T> long count​(SqlQuerySpec querySpec,
                              String containerName)
        Description copied from interface: CosmosOperations
        Count
        Specified by:
        count in interface CosmosOperations
        Type Parameters:
        T - type class of domainType
        Parameters:
        querySpec - the document query spec
        containerName - the container name
        Returns:
        count result
      • runQuery

        public <T> Iterable<T> runQuery​(SqlQuerySpec querySpec,
                                        Class<?> domainType,
                                        Class<T> returnType)
        Description copied from interface: CosmosOperations
        Run the query.
        Specified by:
        runQuery in interface CosmosOperations
        Type Parameters:
        T - the type parameter
        Parameters:
        querySpec - the query spec
        domainType - the domain type
        returnType - the return type
        Returns:
        the Iterable
      • runQuery

        public <T> Iterable<T> runQuery​(SqlQuerySpec querySpec,
                                        org.springframework.data.domain.Sort sort,
                                        Class<?> domainType,
                                        Class<T> returnType)
        Description copied from interface: CosmosOperations
        Run the query.
        Specified by:
        runQuery in interface CosmosOperations
        Type Parameters:
        T - the type parameter
        Parameters:
        querySpec - the query spec
        sort - the sort order
        domainType - the domain type
        returnType - the return type
        Returns:
        the Iterable