com.azure.cosmos.CosmosScripts Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of azure-cosmos Show documentation
Show all versions of azure-cosmos Show documentation
This Package contains Microsoft Azure Cosmos SDK (with Reactive Extension Reactor support) for Azure Cosmos DB SQL API
// Copyright (c) Microsoft Corporation. All rights reserved.
// Licensed under the MIT License.
package com.azure.cosmos;
import com.azure.cosmos.models.CosmosStoredProcedureResponse;
import com.azure.cosmos.models.CosmosTriggerResponse;
import com.azure.cosmos.models.CosmosUserDefinedFunctionResponse;
import com.azure.cosmos.models.CosmosStoredProcedureProperties;
import com.azure.cosmos.models.CosmosStoredProcedureRequestOptions;
import com.azure.cosmos.models.CosmosTriggerProperties;
import com.azure.cosmos.models.CosmosUserDefinedFunctionProperties;
import com.azure.cosmos.models.CosmosQueryRequestOptions;
import com.azure.cosmos.models.SqlQuerySpec;
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;
/**
* The type Cosmos sync scripts.
*/
public class CosmosScripts {
private final CosmosContainer container;
private final CosmosAsyncScripts asyncScripts;
/**
* Instantiates a new Cosmos sync scripts.
*
* @param container the container
* @param asyncScripts the async scripts
*/
CosmosScripts(CosmosContainer container, CosmosAsyncScripts asyncScripts) {
this.container = container;
this.asyncScripts = asyncScripts;
}
/* CosmosAsyncStoredProcedure operations */
/**
* Create stored procedure
*
* @param properties the properties
* @return the cosmos stored procedure response
*/
public CosmosStoredProcedureResponse createStoredProcedure(CosmosStoredProcedureProperties properties) {
return blockStoredProcedureResponse(
asyncScripts.createStoredProcedure(properties, new CosmosStoredProcedureRequestOptions())
);
}
/**
* Create stored procedure cosmos
*
* @param properties the properties
* @param options the options
* @return the cosmos stored procedure response
*/
public CosmosStoredProcedureResponse createStoredProcedure(
CosmosStoredProcedureProperties properties,
CosmosStoredProcedureRequestOptions options) {
return blockStoredProcedureResponse(asyncScripts.createStoredProcedure(properties,
options));
}
/**
* Read all stored procedures {@link CosmosPagedIterable}.
*
* @return the {@link CosmosPagedIterable}
*/
public CosmosPagedIterable readAllStoredProcedures() {
return getCosmosPagedIterable(asyncScripts.readAllStoredProcedures(new CosmosQueryRequestOptions()));
}
/**
* Read all stored procedures {@link CosmosPagedIterable}.
*
* @param options the options
* @return the {@link CosmosPagedIterable}
*/
CosmosPagedIterable readAllStoredProcedures(CosmosQueryRequestOptions options) {
return getCosmosPagedIterable(asyncScripts.readAllStoredProcedures(options));
}
/**
* Query stored procedures {@link CosmosPagedIterable}.
*
* @param query the query
* @param options the options
* @return the {@link CosmosPagedIterable}
*/
public CosmosPagedIterable queryStoredProcedures(
String query,
CosmosQueryRequestOptions options) {
return getCosmosPagedIterable(asyncScripts.queryStoredProcedures(query, options));
}
/**
* Query stored procedures {@link CosmosPagedIterable}.
*
* @param querySpec the query spec
* @param options the options
* @return the {@link CosmosPagedIterable}
*/
public CosmosPagedIterable queryStoredProcedures(
SqlQuerySpec querySpec,
CosmosQueryRequestOptions options) {
return getCosmosPagedIterable(asyncScripts.queryStoredProcedures(querySpec, options));
}
/**
* Gets stored procedure.
*
* @param id the id
* @return the stored procedure
*/
public CosmosStoredProcedure getStoredProcedure(String id) {
return new CosmosStoredProcedure(id,
this.container,
asyncScripts.getStoredProcedure(id));
}
/* UDF Operations */
/**
* Create user defined function
*
* @param properties the properties
* @return the cosmos user defined function response
*/
public CosmosUserDefinedFunctionResponse createUserDefinedFunction(CosmosUserDefinedFunctionProperties properties) {
return blockUDFResponse(asyncScripts.createUserDefinedFunction(properties));
}
/**
* Read all user defined functions {@link CosmosPagedIterable}.
*
* @return the {@link CosmosPagedIterable}
*/
public CosmosPagedIterable readAllUserDefinedFunctions() {
return getCosmosPagedIterable(asyncScripts.readAllUserDefinedFunctions(new CosmosQueryRequestOptions()));
}
/**
* Read all user defined functions {@link CosmosPagedIterable}.
*
* @param options the options
* @return the {@link CosmosPagedIterable}
*/
CosmosPagedIterable readAllUserDefinedFunctions(
CosmosQueryRequestOptions options) {
return getCosmosPagedIterable(asyncScripts.readAllUserDefinedFunctions(options));
}
/**
* Query user defined functions {@link CosmosPagedIterable}.
*
* @param query the query
* @param options the options
* @return the {@link CosmosPagedIterable}
*/
public CosmosPagedIterable queryUserDefinedFunctions(
String query,
CosmosQueryRequestOptions options) {
return getCosmosPagedIterable(asyncScripts.queryUserDefinedFunctions(new SqlQuerySpec(query), options));
}
/**
* Query user defined functions {@link CosmosPagedIterable}.
*
* @param querySpec the query spec
* @param options the options
* @return the {@link CosmosPagedIterable}
*/
public CosmosPagedIterable queryUserDefinedFunctions(
SqlQuerySpec querySpec,
CosmosQueryRequestOptions options) {
return getCosmosPagedIterable(asyncScripts.queryUserDefinedFunctions(querySpec, options));
}
/**
* Gets user defined function.
*
* @param id the id
* @return the user defined function
*/
public CosmosUserDefinedFunction getUserDefinedFunction(String id) {
return new CosmosUserDefinedFunction(id,
this.container,
asyncScripts.getUserDefinedFunction(id));
}
/* Trigger Operations */
/**
* Create trigger
*
* @param properties the properties
* @return the cosmos trigger response
*/
public CosmosTriggerResponse createTrigger(CosmosTriggerProperties properties) {
return blockTriggerResponse(asyncScripts.createTrigger(properties));
}
/**
* Read all triggers {@link CosmosPagedIterable}.
*
* @return the {@link CosmosPagedIterable}
*/
public CosmosPagedIterable readAllTriggers() {
return getCosmosPagedIterable(asyncScripts.readAllTriggers(new CosmosQueryRequestOptions()));
}
/**
* Read all triggers {@link CosmosPagedIterable}.
*
* @param options the options
* @return the {@link CosmosPagedIterable}
*/
CosmosPagedIterable readAllTriggers(CosmosQueryRequestOptions options) {
return getCosmosPagedIterable(asyncScripts.readAllTriggers(options));
}
/**
* Query triggers {@link CosmosPagedIterable}.
*
* @param query the query
* @param options the options
* @return the {@link CosmosPagedIterable}
*/
public CosmosPagedIterable queryTriggers(String query, CosmosQueryRequestOptions options) {
return getCosmosPagedIterable(asyncScripts.queryTriggers(query, options));
}
/**
* Query triggers {@link CosmosPagedIterable}.
*
* @param querySpec the query spec
* @param options the options
* @return the {@link CosmosPagedIterable}
*/
public CosmosPagedIterable queryTriggers(
SqlQuerySpec querySpec,
CosmosQueryRequestOptions options) {
return getCosmosPagedIterable(asyncScripts.queryTriggers(querySpec, options));
}
/**
* Gets trigger.
*
* @param id the id
* @return the trigger
*/
public CosmosTrigger getTrigger(String id) {
return new CosmosTrigger(id,
this.container,
asyncScripts.getTrigger(id));
}
/**
* Block cosmos stored procedure response.
*
* @param storedProcedureResponseMono the stored procedure response mono
* @return the cosmos stored procedure response
*/
CosmosStoredProcedureResponse blockStoredProcedureResponse(
Mono storedProcedureResponseMono) {
try {
return storedProcedureResponseMono.block();
} catch (Exception ex) {
final Throwable throwable = Exceptions.unwrap(ex);
if (throwable instanceof CosmosException) {
throw (CosmosException) throwable;
} else {
throw ex;
}
}
}
/**
* Block cosmos user defined function response.
*
* @param responseMono the response mono
* @return the cosmos user defined function response
*/
CosmosUserDefinedFunctionResponse blockUDFResponse(
Mono responseMono) {
try {
return responseMono.block();
} catch (Exception ex) {
final Throwable throwable = Exceptions.unwrap(ex);
if (throwable instanceof CosmosException) {
throw (CosmosException) throwable;
} else {
throw Exceptions.propagate(ex);
}
}
}
//Trigger
/**
* Block cosmos trigger response.
*
* @param responseMono the response mono
* @return the cosmos trigger response
*/
CosmosTriggerResponse blockTriggerResponse(Mono responseMono) {
try {
return responseMono.block();
} catch (Exception ex) {
final Throwable throwable = Exceptions.unwrap(ex);
if (throwable instanceof CosmosException) {
throw (CosmosException) throwable;
} else {
throw Exceptions.propagate(ex);
}
}
}
private CosmosPagedIterable getCosmosPagedIterable(CosmosPagedFlux cosmosPagedFlux) {
return new CosmosPagedIterable<>(cosmosPagedFlux);
}
}