All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.azure.cosmos.CosmosClient Maven / Gradle / Ivy

Go to download

This Package contains Microsoft Azure Cosmos SDK (with Reactive Extension Reactor support) for Azure Cosmos DB SQL API

There is a newer version: 4.61.1
Show newest version
// Copyright (c) Microsoft Corporation. All rights reserved.
// Licensed under the MIT License.

package com.azure.cosmos;

import com.azure.core.annotation.ServiceClient;
import com.azure.cosmos.implementation.ImplementationBridgeHelpers;
import com.azure.cosmos.models.CosmosDatabaseProperties;
import com.azure.cosmos.models.CosmosDatabaseRequestOptions;
import com.azure.cosmos.models.CosmosDatabaseResponse;
import com.azure.cosmos.models.CosmosQueryRequestOptions;
import com.azure.cosmos.models.SqlQuerySpec;
import com.azure.cosmos.models.ThroughputProperties;
import com.azure.cosmos.util.Beta;
import com.azure.cosmos.util.CosmosPagedFlux;
import com.azure.cosmos.util.CosmosPagedIterable;
import com.azure.cosmos.util.UtilBridgeInternal;
import reactor.core.Exceptions;
import reactor.core.publisher.Mono;

import java.io.Closeable;

/**
 * Provides a client-side logical representation of the Azure Cosmos DB service.
 * Calls to CosmosClient API's are blocked for completion.
 */
@ServiceClient(builder = CosmosClientBuilder.class)
public final class CosmosClient implements Closeable {
    private final CosmosAsyncClient asyncClientWrapper;

    CosmosClient(CosmosClientBuilder builder) {
        this.asyncClientWrapper = builder.buildAsyncClient();
    }

    /**
     * Create a Cosmos database if it does not already exist on the service.
     *
     * @param databaseProperties {@link CosmosDatabaseProperties} the database properties.
     * @return the {@link CosmosDatabaseResponse} with the created database.
     */
    CosmosDatabaseResponse createDatabaseIfNotExists(CosmosDatabaseProperties databaseProperties) {
        return blockDatabaseResponse(asyncClientWrapper.createDatabaseIfNotExists(databaseProperties));
    }

    /**
     * Create a Cosmos database if it does not already exist on the service.
     * 

* The throughputProperties will only be used if the specified database * does not exist and therefor a new database will be created with throughputProperties. * * @param id the id of the database. * @param throughputProperties the throughputProperties. * @return the {@link CosmosDatabaseResponse} with the created database. */ public CosmosDatabaseResponse createDatabaseIfNotExists(String id, ThroughputProperties throughputProperties) { return blockDatabaseResponse(asyncClientWrapper.createDatabaseIfNotExists(id, throughputProperties)); } /** * Create a Cosmos database if it does not already exist on the service. * * @param id the id of the database. * @return the {@link CosmosDatabaseResponse} with the created database. */ public CosmosDatabaseResponse createDatabaseIfNotExists(String id) { return blockDatabaseResponse(asyncClientWrapper.createDatabaseIfNotExists(id)); } /** * Creates a database. * * @param databaseProperties {@link CosmosDatabaseProperties} the database properties. * @param options the request options. * @return the {@link CosmosDatabaseResponse} with the created database. */ public CosmosDatabaseResponse createDatabase(CosmosDatabaseProperties databaseProperties, CosmosDatabaseRequestOptions options) { return blockDatabaseResponse(asyncClientWrapper.createDatabase(databaseProperties, options)); } /** * Creates a Cosmos database. * * @param databaseProperties {@link CosmosDatabaseProperties} the database properties. * @return the {@link CosmosDatabaseResponse} with the created database. */ public CosmosDatabaseResponse createDatabase(CosmosDatabaseProperties databaseProperties) { return blockDatabaseResponse(asyncClientWrapper.createDatabase(databaseProperties)); } /** * Creates a Cosmos database. * * @param id the id of the database. * @return the {@link CosmosDatabaseResponse} with the created database. */ public CosmosDatabaseResponse createDatabase(String id) { return blockDatabaseResponse(asyncClientWrapper.createDatabase(id)); } /** * Creates a Cosmos database. * * @param databaseProperties {@link CosmosDatabaseProperties} the database properties. * @param throughputProperties the throughput properties. * @param options {@link CosmosDatabaseRequestOptions} the request options. * @return the {@link CosmosDatabaseResponse} with the created database. */ public CosmosDatabaseResponse createDatabase(CosmosDatabaseProperties databaseProperties, ThroughputProperties throughputProperties, CosmosDatabaseRequestOptions options) { return blockDatabaseResponse(asyncClientWrapper.createDatabase(databaseProperties, throughputProperties, options)); } /** * Creates a Cosmos database. * * @param databaseProperties {@link CosmosDatabaseProperties} the database properties. * @param throughputProperties the throughput properties. * @return the {@link CosmosDatabaseResponse} with the created database. */ public CosmosDatabaseResponse createDatabase(CosmosDatabaseProperties databaseProperties, ThroughputProperties throughputProperties) { return blockDatabaseResponse(asyncClientWrapper.createDatabase(databaseProperties, throughputProperties)); } /** * Creates a Cosmos database. * * @param id the id of the database. * @param throughputProperties the throughput properties. * @return the {@link CosmosDatabaseResponse} with the created database. */ public CosmosDatabaseResponse createDatabase(String id, ThroughputProperties throughputProperties) { return blockDatabaseResponse(asyncClientWrapper.createDatabase(id, throughputProperties)); } CosmosDatabaseResponse blockDatabaseResponse(Mono databaseMono) { try { return databaseMono.block(); } catch (Exception ex) { final Throwable throwable = Exceptions.unwrap(ex); if (throwable instanceof CosmosException) { throw (CosmosException) throwable; } else { throw Exceptions.propagate(ex); } } } /** * Reads all Cosmos databases. * * @param options {@link CosmosQueryRequestOptions}the feed options. * @return the {@link CosmosPagedIterable} for feed response with the read databases. */ CosmosPagedIterable readAllDatabases(CosmosQueryRequestOptions options) { return getCosmosPagedIterable(asyncClientWrapper.readAllDatabases(options)); } /** * Reads all Cosmos databases. * * @return the {@link CosmosPagedIterable} for feed response with the read databases. */ public CosmosPagedIterable readAllDatabases() { return getCosmosPagedIterable(asyncClientWrapper.readAllDatabases()); } /** * Query a Cosmos database. * * @param query the query. * @param options {@link CosmosQueryRequestOptions}the feed options. * @return the {@link CosmosPagedIterable} for feed response with the obtained databases. */ public CosmosPagedIterable queryDatabases(String query, CosmosQueryRequestOptions options) { return getCosmosPagedIterable(asyncClientWrapper.queryDatabases(query, options)); } /** * Query a Cosmos database. * * @param querySpec {@link SqlQuerySpec} the query spec. * @param options the query request options. * @return the {@link CosmosPagedIterable} for feed response with the obtained databases. */ public CosmosPagedIterable queryDatabases(SqlQuerySpec querySpec, CosmosQueryRequestOptions options) { return getCosmosPagedIterable(asyncClientWrapper.queryDatabases(querySpec, options)); } /** * Gets the Cosmos database client. * * @param id the id of the database. * @return {@link CosmosDatabase} the cosmos sync database. */ public CosmosDatabase getDatabase(String id) { return new CosmosDatabase(id, this, asyncClientWrapper.getDatabase(id)); } CosmosAsyncClient asyncClient() { return this.asyncClientWrapper; } /** * Close this {@link CosmosClient} instance. */ public void close() { asyncClientWrapper.close(); } private CosmosPagedIterable getCosmosPagedIterable(CosmosPagedFlux cosmosPagedFlux) { return new CosmosPagedIterable<>(cosmosPagedFlux); } /** * Create global throughput control config builder which will be used to build {@link GlobalThroughputControlConfig}. * * @param databaseId The database id of the control container. * @param containerId The container id of the control container. * @return A {@link GlobalThroughputControlConfigBuilder}. */ @Beta(value = Beta.SinceVersion.V4_13_0, warningText = Beta.PREVIEW_SUBJECT_TO_CHANGE_WARNING) public GlobalThroughputControlConfigBuilder createGlobalThroughputControlConfigBuilder(String databaseId, String containerId) { return new GlobalThroughputControlConfigBuilder(this.asyncClientWrapper, databaseId, containerId); } static { ImplementationBridgeHelpers.CosmosClientHelper.setCosmosClientAccessor( cosmosClient -> cosmosClient.asyncClient()); } }





© 2015 - 2024 Weber Informatics LLC | Privacy Policy