...

Source file src/github.com/go-kivik/kivik/v4/x/fsdb/cdb/cdb.go

Documentation: github.com/go-kivik/kivik/v4/x/fsdb/cdb

     1  // Licensed under the Apache License, Version 2.0 (the "License"); you may not
     2  // use this file except in compliance with the License. You may obtain a copy of
     3  // the License at
     4  //
     5  //  http://www.apache.org/licenses/LICENSE-2.0
     6  //
     7  // Unless required by applicable law or agreed to in writing, software
     8  // distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
     9  // WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
    10  // License for the specific language governing permissions and limitations under
    11  // the License.
    12  
    13  // Package cdb provides the core CouchDB types.
    14  package cdb
    15  
    16  import (
    17  	"fmt"
    18  )
    19  
    20  // RevHistory represents the recent ancestors of a revision.
    21  type RevHistory struct {
    22  	Start int64    `json:"start" yaml:"start"`
    23  	IDs   []string `json:"ids" yaml:"ids"`
    24  }
    25  
    26  // Ancestors returns the full, known revision history, newest first, starting
    27  // with the current rev.
    28  func (h *RevHistory) Ancestors() []string {
    29  	history := make([]string, len(h.IDs))
    30  	for i, id := range h.IDs {
    31  		history[i] = fmt.Sprintf("%d-%s", h.Start-int64(i), id)
    32  	}
    33  	return history
    34  }
    35  
    36  // AddRevision returns a new history, with rev added.
    37  func (h *RevHistory) AddRevision(rev RevID) *RevHistory {
    38  	return &RevHistory{
    39  		Start: rev.Seq,
    40  		IDs:   append([]string{rev.Sum}, h.IDs...),
    41  	}
    42  }
    43  

View as plain text