1515 */
1616package com .couchbase .client .scala .manager .bucket
1717
18+ import com .couchbase .client .core .annotation .SinceCouchbase
1819import com .couchbase .client .core .annotation .Stability .Internal
1920import com .couchbase .client .core .config
2021import com .couchbase .client .core .error .CouchbaseException
@@ -221,7 +222,8 @@ case class CreateBucketSettings(
221222 private [scala] val storageBackend : Option [StorageBackend ] = None ,
222223 private [scala] val historyRetentionCollectionDefault : Option [Boolean ] = None ,
223224 private [scala] val historyRetentionBytes : Option [Long ] = None ,
224- private [scala] val historyRetentionDuration : Option [Duration ] = None
225+ private [scala] val historyRetentionDuration : Option [Duration ] = None ,
226+ private [scala] val numVBuckets : Option [Int ] = None
225227) {
226228
227229 def flushEnabled (value : Boolean ): CreateBucketSettings = {
@@ -285,6 +287,11 @@ case class CreateBucketSettings(
285287 copy(historyRetentionDuration = Some (value))
286288 }
287289
290+ /** Specifies the number of vbuckets (partitions) the created bucket should have.
291+ */
292+ @ SinceCouchbase (" 8.0" )
293+ def numVBuckets (value : Int ): CreateBucketSettings = copy(numVBuckets = Some (value))
294+
288295 private [scala] def toCore : CoreBucketSettings = {
289296 val x = this
290297 new CoreBucketSettings {
@@ -359,7 +366,7 @@ case class CreateBucketSettings(
359366 x.historyRetentionDuration.map(v => DurationConversions .scalaDurationToJava(v)).orNull
360367
361368 override def numVBuckets (): Integer =
362- null // TODO https://jira.issues.couchbase.com/browse/SCBC-479
369+ x.numVBuckets.map(lang. Integer .valueOf).orNull
363370 }
364371 }
365372}
@@ -379,7 +386,8 @@ case class BucketSettings(
379386 storageBackend : Option [StorageBackend ] = None ,
380387 historyRetentionCollectionDefault : Option [Boolean ] = None ,
381388 historyRetentionBytes : Option [Long ] = None ,
382- historyRetentionDuration : Option [Duration ] = None
389+ historyRetentionDuration : Option [Duration ] = None ,
390+ numVBuckets : Option [Int ] = None
383391) {
384392 def toCreateBucketSettings : CreateBucketSettings = {
385393 CreateBucketSettings (
@@ -397,7 +405,8 @@ case class BucketSettings(
397405 storageBackend,
398406 historyRetentionCollectionDefault,
399407 historyRetentionBytes,
400- historyRetentionDuration
408+ historyRetentionDuration,
409+ numVBuckets
401410 )
402411 }
403412}
@@ -452,7 +461,8 @@ private[scala] object BucketSettings {
452461 if (core.historyRetentionBytes != null ) Some (core.historyRetentionBytes) else None ,
453462 if (core.historyRetentionDuration != null )
454463 Some (core.historyRetentionDuration).map(DurationConversions .javaDurationToScala)
455- else None
464+ else None ,
465+ Some (core.numVBuckets)
456466 )
457467 out
458468 }
0 commit comments