diff --git a/cosmos/azure-spring-data-cosmos/spring2-samples/cosmos-multi-tenant-samples/multi-tenant-by-container/src/main/java/com/azure/spring/data/cosmos/example/AppConfiguration.java b/cosmos/azure-spring-data-cosmos/spring2-samples/cosmos-multi-tenant-samples/multi-tenant-by-container/src/main/java/com/azure/spring/data/cosmos/example/AppConfiguration.java index 178f4a80f..3a968184d 100644 --- a/cosmos/azure-spring-data-cosmos/spring2-samples/cosmos-multi-tenant-samples/multi-tenant-by-container/src/main/java/com/azure/spring/data/cosmos/example/AppConfiguration.java +++ b/cosmos/azure-spring-data-cosmos/spring2-samples/cosmos-multi-tenant-samples/multi-tenant-by-container/src/main/java/com/azure/spring/data/cosmos/example/AppConfiguration.java @@ -29,15 +29,12 @@ public class AppConfiguration extends AbstractCosmosConfiguration { private static final Logger logger = LoggerFactory.getLogger(AppConfiguration.class); private final CosmosProperties properties; - private final ApplicationContext applicationContext; private final Environment env; - public AppConfiguration(CosmosProperties properties, Environment env, ApplicationContext applicationContext ){ + public AppConfiguration(CosmosProperties properties, Environment env){ this.env = env; this.properties = properties; - this.applicationContext = applicationContext; } - private CosmosAsyncClient client; @Bean public CosmosClientBuilder cosmosClientBuilder() { @@ -65,9 +62,6 @@ public MultiTenantContainerCosmosFactory cosmosFactory(CosmosAsyncClient cosmosA protected String getDatabaseName() { String databaseName; databaseName = properties.getDatabaseName(); - client = applicationContext.getBean(CosmosAsyncClient.class); - client.createDatabaseIfNotExists(databaseName, ThroughputProperties.createAutoscaledThroughput(4000)); - logger.info("config databaseName result: "+databaseName); return databaseName; } diff --git a/cosmos/azure-spring-data-cosmos/spring2-samples/cosmos-multi-tenant-samples/multi-tenant-by-container/src/main/java/com/azure/spring/data/cosmos/example/Order.java b/cosmos/azure-spring-data-cosmos/spring2-samples/cosmos-multi-tenant-samples/multi-tenant-by-container/src/main/java/com/azure/spring/data/cosmos/example/Order.java index 20b400354..e88f4b355 100644 --- a/cosmos/azure-spring-data-cosmos/spring2-samples/cosmos-multi-tenant-samples/multi-tenant-by-container/src/main/java/com/azure/spring/data/cosmos/example/Order.java +++ b/cosmos/azure-spring-data-cosmos/spring2-samples/cosmos-multi-tenant-samples/multi-tenant-by-container/src/main/java/com/azure/spring/data/cosmos/example/Order.java @@ -14,9 +14,9 @@ @Container(autoCreateContainer = false) public class Order { @Id + @PartitionKey private String id; private String orderDetail; - @PartitionKey private String lastName; private String type; public Order() { diff --git a/cosmos/azure-spring-data-cosmos/spring2-samples/cosmos-multi-tenant-samples/multi-tenant-by-container/src/main/java/com/azure/spring/data/cosmos/example/tenant/MultiTenantContainerCosmosFactory.java b/cosmos/azure-spring-data-cosmos/spring2-samples/cosmos-multi-tenant-samples/multi-tenant-by-container/src/main/java/com/azure/spring/data/cosmos/example/tenant/MultiTenantContainerCosmosFactory.java index f0cb5b05c..2ea9219f3 100644 --- a/cosmos/azure-spring-data-cosmos/spring2-samples/cosmos-multi-tenant-samples/multi-tenant-by-container/src/main/java/com/azure/spring/data/cosmos/example/tenant/MultiTenantContainerCosmosFactory.java +++ b/cosmos/azure-spring-data-cosmos/spring2-samples/cosmos-multi-tenant-samples/multi-tenant-by-container/src/main/java/com/azure/spring/data/cosmos/example/tenant/MultiTenantContainerCosmosFactory.java @@ -24,6 +24,9 @@ public String overrideContainerName() { String tenantId = TenantStorage.getCurrentTenant(); if (tenantId !=null){ this.tenantId = tenantId; + //first check if the tenant exists in a thread-safe list of tenant ids + //if it exists, no further action taken. + //If not, create the tenant container on the fly, using the default database as a model tenantStorage.createTenantSpecificContainerIfNotExists(tenantId, properties.getPartitionKeyPath()); return tenantId; } diff --git a/cosmos/azure-spring-data-cosmos/spring2-samples/cosmos-multi-tenant-samples/multi-tenant-by-container/src/main/resources/application.yaml b/cosmos/azure-spring-data-cosmos/spring2-samples/cosmos-multi-tenant-samples/multi-tenant-by-container/src/main/resources/application.yaml index deaccdb1a..b7dbcce5b 100644 --- a/cosmos/azure-spring-data-cosmos/spring2-samples/cosmos-multi-tenant-samples/multi-tenant-by-container/src/main/resources/application.yaml +++ b/cosmos/azure-spring-data-cosmos/spring2-samples/cosmos-multi-tenant-samples/multi-tenant-by-container/src/main/resources/application.yaml @@ -4,5 +4,5 @@ spring: uri: ${ACCOUNT_HOST} key: ${ACCOUNT_KEY} databaseName: tenants - partitionKeyPath: /lastName + partitionKeyPath: /id queryMetricsEnabled: true diff --git a/cosmos/azure-spring-data-cosmos/spring2-samples/cosmos-multi-tenant-samples/multi-tenant-by-database/src/main/java/com/azure/spring/data/cosmos/example/AppConfiguration.java b/cosmos/azure-spring-data-cosmos/spring2-samples/cosmos-multi-tenant-samples/multi-tenant-by-database/src/main/java/com/azure/spring/data/cosmos/example/AppConfiguration.java index 144dfd3e5..804d25c9d 100644 --- a/cosmos/azure-spring-data-cosmos/spring2-samples/cosmos-multi-tenant-samples/multi-tenant-by-database/src/main/java/com/azure/spring/data/cosmos/example/AppConfiguration.java +++ b/cosmos/azure-spring-data-cosmos/spring2-samples/cosmos-multi-tenant-samples/multi-tenant-by-database/src/main/java/com/azure/spring/data/cosmos/example/AppConfiguration.java @@ -30,14 +30,11 @@ public class AppConfiguration extends AbstractCosmosConfiguration { private static final Logger LOGGER = LoggerFactory.getLogger(AppConfiguration.class); private final CosmosProperties properties; private final Environment env; - private final ApplicationContext applicationContext; - public AppConfiguration(CosmosProperties properties, Environment env, ApplicationContext applicationContext ){ + public AppConfiguration(CosmosProperties properties, Environment env){ this.env = env; this.properties = properties; - this.applicationContext = applicationContext; } - private CosmosAsyncClient client; @Bean public CosmosClientBuilder cosmosClientBuilder() { @@ -65,9 +62,6 @@ public CosmosConfig cosmosConfig() { protected String getDatabaseName() { String databaseName; databaseName = properties.getDatabaseName(); - client = applicationContext.getBean(CosmosAsyncClient.class); - client.createDatabaseIfNotExists(databaseName, ThroughputProperties.createAutoscaledThroughput(4000)); - LOGGER.info("config databaseName result: "+databaseName); return databaseName; } diff --git a/cosmos/azure-spring-data-cosmos/spring2-samples/cosmos-multi-tenant-samples/multi-tenant-by-database/src/main/java/com/azure/spring/data/cosmos/example/Order.java b/cosmos/azure-spring-data-cosmos/spring2-samples/cosmos-multi-tenant-samples/multi-tenant-by-database/src/main/java/com/azure/spring/data/cosmos/example/Order.java index c131ebea3..6cbdf7072 100644 --- a/cosmos/azure-spring-data-cosmos/spring2-samples/cosmos-multi-tenant-samples/multi-tenant-by-database/src/main/java/com/azure/spring/data/cosmos/example/Order.java +++ b/cosmos/azure-spring-data-cosmos/spring2-samples/cosmos-multi-tenant-samples/multi-tenant-by-database/src/main/java/com/azure/spring/data/cosmos/example/Order.java @@ -10,9 +10,9 @@ @Container(autoCreateContainer = true) public class Order { @Id + @PartitionKey private String id; private String orderDetail; - @PartitionKey private String lastName; public Order() { } diff --git a/cosmos/azure-spring-data-cosmos/spring2-samples/cosmos-multi-tenant-samples/multi-tenant-by-database/src/main/java/com/azure/spring/data/cosmos/example/OrderController.java b/cosmos/azure-spring-data-cosmos/spring2-samples/cosmos-multi-tenant-samples/multi-tenant-by-database/src/main/java/com/azure/spring/data/cosmos/example/OrderController.java index fcf320620..b9d29df83 100644 --- a/cosmos/azure-spring-data-cosmos/spring2-samples/cosmos-multi-tenant-samples/multi-tenant-by-database/src/main/java/com/azure/spring/data/cosmos/example/OrderController.java +++ b/cosmos/azure-spring-data-cosmos/spring2-samples/cosmos-multi-tenant-samples/multi-tenant-by-database/src/main/java/com/azure/spring/data/cosmos/example/OrderController.java @@ -29,7 +29,7 @@ public OrderController(OrderRepository orderRepository) { } @PostMapping - public @ResponseBody String createUser(@RequestBody Order order) { + public @ResponseBody String createOrder(@RequestBody Order order) { UUID uuid = UUID.randomUUID(); order.setId(String.valueOf(uuid)); orderRepository.save(order); diff --git a/cosmos/azure-spring-data-cosmos/spring2-samples/cosmos-multi-tenant-samples/multi-tenant-by-database/src/main/java/com/azure/spring/data/cosmos/example/User.java b/cosmos/azure-spring-data-cosmos/spring2-samples/cosmos-multi-tenant-samples/multi-tenant-by-database/src/main/java/com/azure/spring/data/cosmos/example/User.java index 141d9eee3..6cb2dd7be 100644 --- a/cosmos/azure-spring-data-cosmos/spring2-samples/cosmos-multi-tenant-samples/multi-tenant-by-database/src/main/java/com/azure/spring/data/cosmos/example/User.java +++ b/cosmos/azure-spring-data-cosmos/spring2-samples/cosmos-multi-tenant-samples/multi-tenant-by-database/src/main/java/com/azure/spring/data/cosmos/example/User.java @@ -10,9 +10,9 @@ @Container(autoCreateContainer = true) public class User { @Id + @PartitionKey private String id; private String firstName; - @PartitionKey private String lastName; public User() { } diff --git a/cosmos/azure-spring-data-cosmos/spring2-samples/cosmos-multi-tenant-samples/multi-tenant-by-database/src/main/java/com/azure/spring/data/cosmos/example/tenant/MultiTenantDBCosmosFactory.java b/cosmos/azure-spring-data-cosmos/spring2-samples/cosmos-multi-tenant-samples/multi-tenant-by-database/src/main/java/com/azure/spring/data/cosmos/example/tenant/MultiTenantDBCosmosFactory.java index e522ef052..6a3c9db4e 100644 --- a/cosmos/azure-spring-data-cosmos/spring2-samples/cosmos-multi-tenant-samples/multi-tenant-by-database/src/main/java/com/azure/spring/data/cosmos/example/tenant/MultiTenantDBCosmosFactory.java +++ b/cosmos/azure-spring-data-cosmos/spring2-samples/cosmos-multi-tenant-samples/multi-tenant-by-database/src/main/java/com/azure/spring/data/cosmos/example/tenant/MultiTenantDBCosmosFactory.java @@ -41,15 +41,14 @@ public MultiTenantDBCosmosFactory(CosmosAsyncClient cosmosAsyncClient, String da public String getDatabaseName() { String tenantId = TenantStorage.getCurrentTenant(); if (tenantId !=null && !tenantId.equals(env.getProperty("spring.data.cosmos.databaseName"))){ - //the getTenant method will first check if the tenant exists in a thread-safe list of tenant ids - //if it exists, it returns the id, and no further action taken. - //If not, it will create the tenant database resources on the fly, using the default database as a model this.tenantId = tenantId; + //first check if the tenant exists in a thread-safe list of tenant ids + //if it exists, no further action taken. + //If not, create the tenant database resources on the fly, using the default database as a model tenantStorage.createTenantSpecificDatabaseIfNotExists(tenantId); return tenantId; } else { - this.client.createDatabaseIfNotExists(env.getProperty("spring.data.cosmos.databaseName"), ThroughputProperties.createAutoscaledThroughput(4000)); return this.tenantId; } } diff --git a/cosmos/azure-spring-data-cosmos/spring2-samples/cosmos-multi-tenant-samples/multi-tenant-by-database/src/main/resources/application.yaml b/cosmos/azure-spring-data-cosmos/spring2-samples/cosmos-multi-tenant-samples/multi-tenant-by-database/src/main/resources/application.yaml index b88c41e08..e6bab3dd6 100644 --- a/cosmos/azure-spring-data-cosmos/spring2-samples/cosmos-multi-tenant-samples/multi-tenant-by-database/src/main/resources/application.yaml +++ b/cosmos/azure-spring-data-cosmos/spring2-samples/cosmos-multi-tenant-samples/multi-tenant-by-database/src/main/resources/application.yaml @@ -3,5 +3,5 @@ spring: cosmos: uri: ${ACCOUNT_HOST} key: ${ACCOUNT_KEY} - databaseName: default + databaseName: TenantTemplateDB queryMetricsEnabled: true diff --git a/cosmos/azure-spring-data-cosmos/spring3-samples/cosmos-multi-tenant-samples/multi-tenant-by-container/src/main/java/com/azure/spring/data/cosmos/example/AppConfiguration.java b/cosmos/azure-spring-data-cosmos/spring3-samples/cosmos-multi-tenant-samples/multi-tenant-by-container/src/main/java/com/azure/spring/data/cosmos/example/AppConfiguration.java index 178f4a80f..3a968184d 100644 --- a/cosmos/azure-spring-data-cosmos/spring3-samples/cosmos-multi-tenant-samples/multi-tenant-by-container/src/main/java/com/azure/spring/data/cosmos/example/AppConfiguration.java +++ b/cosmos/azure-spring-data-cosmos/spring3-samples/cosmos-multi-tenant-samples/multi-tenant-by-container/src/main/java/com/azure/spring/data/cosmos/example/AppConfiguration.java @@ -29,15 +29,12 @@ public class AppConfiguration extends AbstractCosmosConfiguration { private static final Logger logger = LoggerFactory.getLogger(AppConfiguration.class); private final CosmosProperties properties; - private final ApplicationContext applicationContext; private final Environment env; - public AppConfiguration(CosmosProperties properties, Environment env, ApplicationContext applicationContext ){ + public AppConfiguration(CosmosProperties properties, Environment env){ this.env = env; this.properties = properties; - this.applicationContext = applicationContext; } - private CosmosAsyncClient client; @Bean public CosmosClientBuilder cosmosClientBuilder() { @@ -65,9 +62,6 @@ public MultiTenantContainerCosmosFactory cosmosFactory(CosmosAsyncClient cosmosA protected String getDatabaseName() { String databaseName; databaseName = properties.getDatabaseName(); - client = applicationContext.getBean(CosmosAsyncClient.class); - client.createDatabaseIfNotExists(databaseName, ThroughputProperties.createAutoscaledThroughput(4000)); - logger.info("config databaseName result: "+databaseName); return databaseName; } diff --git a/cosmos/azure-spring-data-cosmos/spring3-samples/cosmos-multi-tenant-samples/multi-tenant-by-container/src/main/java/com/azure/spring/data/cosmos/example/Order.java b/cosmos/azure-spring-data-cosmos/spring3-samples/cosmos-multi-tenant-samples/multi-tenant-by-container/src/main/java/com/azure/spring/data/cosmos/example/Order.java index 20b400354..e88f4b355 100644 --- a/cosmos/azure-spring-data-cosmos/spring3-samples/cosmos-multi-tenant-samples/multi-tenant-by-container/src/main/java/com/azure/spring/data/cosmos/example/Order.java +++ b/cosmos/azure-spring-data-cosmos/spring3-samples/cosmos-multi-tenant-samples/multi-tenant-by-container/src/main/java/com/azure/spring/data/cosmos/example/Order.java @@ -14,9 +14,9 @@ @Container(autoCreateContainer = false) public class Order { @Id + @PartitionKey private String id; private String orderDetail; - @PartitionKey private String lastName; private String type; public Order() { diff --git a/cosmos/azure-spring-data-cosmos/spring3-samples/cosmos-multi-tenant-samples/multi-tenant-by-container/src/main/java/com/azure/spring/data/cosmos/example/User.java b/cosmos/azure-spring-data-cosmos/spring3-samples/cosmos-multi-tenant-samples/multi-tenant-by-container/src/main/java/com/azure/spring/data/cosmos/example/User.java index 5ccf2bd97..34a025ac7 100644 --- a/cosmos/azure-spring-data-cosmos/spring3-samples/cosmos-multi-tenant-samples/multi-tenant-by-container/src/main/java/com/azure/spring/data/cosmos/example/User.java +++ b/cosmos/azure-spring-data-cosmos/spring3-samples/cosmos-multi-tenant-samples/multi-tenant-by-container/src/main/java/com/azure/spring/data/cosmos/example/User.java @@ -14,9 +14,9 @@ @Container(autoCreateContainer = false) public class User { @Id + @PartitionKey private String id; private String firstName; - @PartitionKey private String lastName; private String type; public User() { diff --git a/cosmos/azure-spring-data-cosmos/spring3-samples/cosmos-multi-tenant-samples/multi-tenant-by-container/src/main/java/com/azure/spring/data/cosmos/example/tenant/MultiTenantContainerCosmosFactory.java b/cosmos/azure-spring-data-cosmos/spring3-samples/cosmos-multi-tenant-samples/multi-tenant-by-container/src/main/java/com/azure/spring/data/cosmos/example/tenant/MultiTenantContainerCosmosFactory.java index f0cb5b05c..2ea9219f3 100644 --- a/cosmos/azure-spring-data-cosmos/spring3-samples/cosmos-multi-tenant-samples/multi-tenant-by-container/src/main/java/com/azure/spring/data/cosmos/example/tenant/MultiTenantContainerCosmosFactory.java +++ b/cosmos/azure-spring-data-cosmos/spring3-samples/cosmos-multi-tenant-samples/multi-tenant-by-container/src/main/java/com/azure/spring/data/cosmos/example/tenant/MultiTenantContainerCosmosFactory.java @@ -24,6 +24,9 @@ public String overrideContainerName() { String tenantId = TenantStorage.getCurrentTenant(); if (tenantId !=null){ this.tenantId = tenantId; + //first check if the tenant exists in a thread-safe list of tenant ids + //if it exists, no further action taken. + //If not, create the tenant container on the fly, using the default database as a model tenantStorage.createTenantSpecificContainerIfNotExists(tenantId, properties.getPartitionKeyPath()); return tenantId; } diff --git a/cosmos/azure-spring-data-cosmos/spring3-samples/cosmos-multi-tenant-samples/multi-tenant-by-container/src/main/resources/application.yaml b/cosmos/azure-spring-data-cosmos/spring3-samples/cosmos-multi-tenant-samples/multi-tenant-by-container/src/main/resources/application.yaml index deaccdb1a..b7dbcce5b 100644 --- a/cosmos/azure-spring-data-cosmos/spring3-samples/cosmos-multi-tenant-samples/multi-tenant-by-container/src/main/resources/application.yaml +++ b/cosmos/azure-spring-data-cosmos/spring3-samples/cosmos-multi-tenant-samples/multi-tenant-by-container/src/main/resources/application.yaml @@ -4,5 +4,5 @@ spring: uri: ${ACCOUNT_HOST} key: ${ACCOUNT_KEY} databaseName: tenants - partitionKeyPath: /lastName + partitionKeyPath: /id queryMetricsEnabled: true diff --git a/cosmos/azure-spring-data-cosmos/spring3-samples/cosmos-multi-tenant-samples/multi-tenant-by-database/src/main/java/com/azure/spring/data/cosmos/example/AppConfiguration.java b/cosmos/azure-spring-data-cosmos/spring3-samples/cosmos-multi-tenant-samples/multi-tenant-by-database/src/main/java/com/azure/spring/data/cosmos/example/AppConfiguration.java index 144dfd3e5..804d25c9d 100644 --- a/cosmos/azure-spring-data-cosmos/spring3-samples/cosmos-multi-tenant-samples/multi-tenant-by-database/src/main/java/com/azure/spring/data/cosmos/example/AppConfiguration.java +++ b/cosmos/azure-spring-data-cosmos/spring3-samples/cosmos-multi-tenant-samples/multi-tenant-by-database/src/main/java/com/azure/spring/data/cosmos/example/AppConfiguration.java @@ -30,14 +30,11 @@ public class AppConfiguration extends AbstractCosmosConfiguration { private static final Logger LOGGER = LoggerFactory.getLogger(AppConfiguration.class); private final CosmosProperties properties; private final Environment env; - private final ApplicationContext applicationContext; - public AppConfiguration(CosmosProperties properties, Environment env, ApplicationContext applicationContext ){ + public AppConfiguration(CosmosProperties properties, Environment env){ this.env = env; this.properties = properties; - this.applicationContext = applicationContext; } - private CosmosAsyncClient client; @Bean public CosmosClientBuilder cosmosClientBuilder() { @@ -65,9 +62,6 @@ public CosmosConfig cosmosConfig() { protected String getDatabaseName() { String databaseName; databaseName = properties.getDatabaseName(); - client = applicationContext.getBean(CosmosAsyncClient.class); - client.createDatabaseIfNotExists(databaseName, ThroughputProperties.createAutoscaledThroughput(4000)); - LOGGER.info("config databaseName result: "+databaseName); return databaseName; } diff --git a/cosmos/azure-spring-data-cosmos/spring3-samples/cosmos-multi-tenant-samples/multi-tenant-by-database/src/main/java/com/azure/spring/data/cosmos/example/Order.java b/cosmos/azure-spring-data-cosmos/spring3-samples/cosmos-multi-tenant-samples/multi-tenant-by-database/src/main/java/com/azure/spring/data/cosmos/example/Order.java index c131ebea3..6cbdf7072 100644 --- a/cosmos/azure-spring-data-cosmos/spring3-samples/cosmos-multi-tenant-samples/multi-tenant-by-database/src/main/java/com/azure/spring/data/cosmos/example/Order.java +++ b/cosmos/azure-spring-data-cosmos/spring3-samples/cosmos-multi-tenant-samples/multi-tenant-by-database/src/main/java/com/azure/spring/data/cosmos/example/Order.java @@ -10,9 +10,9 @@ @Container(autoCreateContainer = true) public class Order { @Id + @PartitionKey private String id; private String orderDetail; - @PartitionKey private String lastName; public Order() { } diff --git a/cosmos/azure-spring-data-cosmos/spring3-samples/cosmos-multi-tenant-samples/multi-tenant-by-database/src/main/java/com/azure/spring/data/cosmos/example/OrderController.java b/cosmos/azure-spring-data-cosmos/spring3-samples/cosmos-multi-tenant-samples/multi-tenant-by-database/src/main/java/com/azure/spring/data/cosmos/example/OrderController.java index fcf320620..b9d29df83 100644 --- a/cosmos/azure-spring-data-cosmos/spring3-samples/cosmos-multi-tenant-samples/multi-tenant-by-database/src/main/java/com/azure/spring/data/cosmos/example/OrderController.java +++ b/cosmos/azure-spring-data-cosmos/spring3-samples/cosmos-multi-tenant-samples/multi-tenant-by-database/src/main/java/com/azure/spring/data/cosmos/example/OrderController.java @@ -29,7 +29,7 @@ public OrderController(OrderRepository orderRepository) { } @PostMapping - public @ResponseBody String createUser(@RequestBody Order order) { + public @ResponseBody String createOrder(@RequestBody Order order) { UUID uuid = UUID.randomUUID(); order.setId(String.valueOf(uuid)); orderRepository.save(order); diff --git a/cosmos/azure-spring-data-cosmos/spring3-samples/cosmos-multi-tenant-samples/multi-tenant-by-database/src/main/java/com/azure/spring/data/cosmos/example/User.java b/cosmos/azure-spring-data-cosmos/spring3-samples/cosmos-multi-tenant-samples/multi-tenant-by-database/src/main/java/com/azure/spring/data/cosmos/example/User.java index 141d9eee3..6cb2dd7be 100644 --- a/cosmos/azure-spring-data-cosmos/spring3-samples/cosmos-multi-tenant-samples/multi-tenant-by-database/src/main/java/com/azure/spring/data/cosmos/example/User.java +++ b/cosmos/azure-spring-data-cosmos/spring3-samples/cosmos-multi-tenant-samples/multi-tenant-by-database/src/main/java/com/azure/spring/data/cosmos/example/User.java @@ -10,9 +10,9 @@ @Container(autoCreateContainer = true) public class User { @Id + @PartitionKey private String id; private String firstName; - @PartitionKey private String lastName; public User() { } diff --git a/cosmos/azure-spring-data-cosmos/spring3-samples/cosmos-multi-tenant-samples/multi-tenant-by-database/src/main/java/com/azure/spring/data/cosmos/example/tenant/MultiTenantDBCosmosFactory.java b/cosmos/azure-spring-data-cosmos/spring3-samples/cosmos-multi-tenant-samples/multi-tenant-by-database/src/main/java/com/azure/spring/data/cosmos/example/tenant/MultiTenantDBCosmosFactory.java index e522ef052..6a3c9db4e 100644 --- a/cosmos/azure-spring-data-cosmos/spring3-samples/cosmos-multi-tenant-samples/multi-tenant-by-database/src/main/java/com/azure/spring/data/cosmos/example/tenant/MultiTenantDBCosmosFactory.java +++ b/cosmos/azure-spring-data-cosmos/spring3-samples/cosmos-multi-tenant-samples/multi-tenant-by-database/src/main/java/com/azure/spring/data/cosmos/example/tenant/MultiTenantDBCosmosFactory.java @@ -41,15 +41,14 @@ public MultiTenantDBCosmosFactory(CosmosAsyncClient cosmosAsyncClient, String da public String getDatabaseName() { String tenantId = TenantStorage.getCurrentTenant(); if (tenantId !=null && !tenantId.equals(env.getProperty("spring.data.cosmos.databaseName"))){ - //the getTenant method will first check if the tenant exists in a thread-safe list of tenant ids - //if it exists, it returns the id, and no further action taken. - //If not, it will create the tenant database resources on the fly, using the default database as a model this.tenantId = tenantId; + //first check if the tenant exists in a thread-safe list of tenant ids + //if it exists, no further action taken. + //If not, create the tenant database resources on the fly, using the default database as a model tenantStorage.createTenantSpecificDatabaseIfNotExists(tenantId); return tenantId; } else { - this.client.createDatabaseIfNotExists(env.getProperty("spring.data.cosmos.databaseName"), ThroughputProperties.createAutoscaledThroughput(4000)); return this.tenantId; } } diff --git a/cosmos/azure-spring-data-cosmos/spring3-samples/cosmos-multi-tenant-samples/multi-tenant-by-database/src/main/resources/application.yaml b/cosmos/azure-spring-data-cosmos/spring3-samples/cosmos-multi-tenant-samples/multi-tenant-by-database/src/main/resources/application.yaml index b88c41e08..e6bab3dd6 100644 --- a/cosmos/azure-spring-data-cosmos/spring3-samples/cosmos-multi-tenant-samples/multi-tenant-by-database/src/main/resources/application.yaml +++ b/cosmos/azure-spring-data-cosmos/spring3-samples/cosmos-multi-tenant-samples/multi-tenant-by-database/src/main/resources/application.yaml @@ -3,5 +3,5 @@ spring: cosmos: uri: ${ACCOUNT_HOST} key: ${ACCOUNT_KEY} - databaseName: default + databaseName: TenantTemplateDB queryMetricsEnabled: true