Specs - dreameddeath/couchbase-testing GitHub Wiki
CouchbaseCloningBucketWrapper
- Permet de gérer un bucket source et un bucket "cible"
- Se gère au niveau BucketFactory par nom de bucket
- Définit pour un bucket "source" donné, un bucket "cible" (éventuellement sur un autre cluster)
#Pseudo code
var source;
var target;
func get(key){
return target.asyncGet().map(doc.flags |= clonedFlag).whenFailure(source.asyncGet());
}
func create(key,doc){
return target.asyncCreate(key,doc);
}
func update(key,doc){
return (doc.flags & clonedFlag)?target.asyncUpdate(key,doc):target.asyncCreate(key,doc).whenFailedWithDuplicate(throw CasMisMatch);
}
func [pre|ap]pend(key,doc){
return (doc.flags & clonedFlag)?target.[pre|ap]pend(key,doc):
target.asyncCreate(key,[pre|ap]pend(source.get(key),doc)).whenFailed(target.[pre|ap]pend(key,doc))
}
func counter(key,value){
target.counter(key,value).whenFailed(target.counter(key,value,source.get(key))); // économise un get sur le source par défaut
}