public void createBucket(BucketSettings bucketSetting, UserSettings userSettings, boolean primaryIndex) { ClusterManager clusterManager = getCouchbaseCluster().clusterManager(clusterUsername, clusterPassword); // Insert Bucket BucketSettings bucketSettings = clusterManager.insertBucket(bucketSetting); try { // Insert Bucket user clusterManager.upsertUser(AuthDomain.LOCAL, bucketSetting.name(), userSettings); } catch (Exception e) { logger().warn("Unable to insert user '" + bucketSetting.name() + "', maybe you are using older version"); } if (index) { Bucket bucket = getCouchbaseCluster().openBucket(bucketSettings.name(), bucketSettings.password()); new CouchbaseQueryServiceWaitStrategy(bucket).waitUntilReady(this); if (primaryIndex) { bucket.query(Index.createPrimaryIndex().on(bucketSetting.name())); } } }
@Override public Observable<Boolean> createN1qlIndex(final String indexName, List<Object> fields, Expression whereClause, final boolean ignoreIfExist, boolean defer) { if (fields == null || fields.isEmpty()) { throw new IllegalArgumentException("At least one field is required for secondary index"); } int i = -1; Expression firstExpression = expressionOrIdentifier(fields.get(0)); Expression[] otherExpressions = new Expression[fields.size() - 1]; for (Object field : fields) { if (i > -1) { otherExpressions[i] = expressionOrIdentifier(field); } //otherwise skip first expression, already processed i++; } Statement createIndex; UsingWithPath usingWithPath; if (whereClause != null) { usingWithPath = Index.createIndex(indexName).on(bucket, firstExpression, otherExpressions).where(whereClause); } else { usingWithPath = Index.createIndex(indexName).on(bucket, firstExpression, otherExpressions); } if (defer) { createIndex = usingWithPath.withDefer(); } else { createIndex = usingWithPath; } return queryExecutor.execute(N1qlQuery.simple(createIndex), env, env.managementTimeout(), TimeUnit.MILLISECONDS) .compose(checkIndexCreation(ignoreIfExist, "Error creating secondary index " + indexName)); }
@Override public Observable<Boolean> dropN1qlPrimaryIndex(final boolean ignoreIfNotExist) { return drop(ignoreIfNotExist, Index.dropPrimaryIndex(bucket).using(IndexType.GSI), "Error dropping primary index"); }
@Override public Observable<Boolean> dropN1qlPrimaryIndex(String customName, boolean ignoreIfNotExist) { return drop(ignoreIfNotExist, Index.dropNamedPrimaryIndex(bucket, customName).using(IndexType.GSI), "Error dropping custom primary index \"" + customName + "\""); }
@Override public Observable<Boolean> dropN1qlIndex(String name, boolean ignoreIfNotExist) { return drop(ignoreIfNotExist, Index.dropIndex(bucket, name).using(IndexType.GSI), "Error dropping index \"" + name + "\""); }
@Override public Observable<Boolean> createN1qlPrimaryIndex(final String customName, final boolean ignoreIfExist, boolean defer) { Statement createIndex; UsingWithPath usingWithPath = Index.createNamedPrimaryIndex(customName).on(bucket); if (defer) { createIndex = usingWithPath.withDefer(); } else { createIndex = usingWithPath; } return queryExecutor.execute(N1qlQuery.simple(createIndex), env, env.managementTimeout(), TimeUnit.MILLISECONDS) .compose(checkIndexCreation(ignoreIfExist, "Error creating custom primary index " + customName)); }
final String type = metadata.getDomainType().getName(); Statement createIndex = Index.createIndex(indexName) .on(bucketName, x(typeKey)) .where(x(typeKey).eq(s(type)))
private void createPrimaryIndex(Bucket bucket, CouchbaseBuildDefinition buildDefinition) { LOG.debug("Creating primary index in bucket '{}'", buildDefinition.getBucketName()); N1qlQueryResult result = bucket.query(N1qlQuery.simple( Index.createPrimaryIndex().on(bucket.name()) )); if (!result.finalSuccess()) { LOG.error("Failed to create primary index: {}", result.errors()); throw new EnvironmentBuilderException("Failed to create primary index for " + buildDefinition.getBucketName()); } LOG.debug("Primary index created in bucket '{}'", buildDefinition.getBucketName()); }
final String type = metadata.getDomainType().getName(); Statement createIndex = Index.createIndex(indexName) .on(bucketName, x(typeKey)) .where(x(typeKey).eq(s(type)))
private Observable<Void> buildN1qlPrimary(final RepositoryInformation metadata, Bucket bucket) { final String bucketName = bucket.name(); Statement createPrimary = Index.createPrimaryIndex() .on(bucketName) .using(IndexType.GSI);
private Observable<Void> buildN1qlPrimary(final RepositoryInformation metadata, Bucket bucket) { final String bucketName = bucket.name(); Statement createPrimary = Index.createPrimaryIndex() .on(bucketName) .using(IndexType.GSI);
@Override public Observable<Boolean> createN1qlPrimaryIndex(final boolean ignoreIfExist, boolean defer) { Statement createIndex; UsingWithPath usingWithPath = Index.createPrimaryIndex().on(bucket); if (defer) { createIndex = usingWithPath.withDefer(); } else { createIndex = usingWithPath; } return queryExecutor.execute(N1qlQuery.simple(createIndex), env, env.managementTimeout(), TimeUnit.MILLISECONDS) .compose(checkIndexCreation(ignoreIfExist, "Error creating primary index")); }
public void createBucket(BucketSettings bucketSetting, boolean primaryIndex) { ClusterManager clusterManager = getCouchbaseCluster().clusterManager(clusterUsername, clusterPassword); // Insert Bucket BucketSettings bucketSettings = clusterManager.insertBucket(bucketSetting); // Insert Bucket admin user UserSettings userSettings = UserSettings.build() .password(bucketSetting.password()) .roles(Collections.singletonList(new UserRole("bucket_admin", bucketSetting.name()))); try { clusterManager.upsertUser(AuthDomain.LOCAL, bucketSetting.name(), userSettings); } catch (Exception e) { logger().warn("Unable to insert user '" + bucketSetting.name() + "', maybe you are using older version"); } if (index) { Bucket bucket = getCouchbaseCluster().openBucket(bucketSettings.name(), bucketSettings.password()); new CouchbaseQueryServiceWaitStrategy(bucket).waitUntilReady(this); if (primaryIndex) { bucket.query(Index.createPrimaryIndex().on(bucketSetting.name())); } } }