nimo-shake/checkpoint/writer.go (32 lines of code) (raw):

package checkpoint import ( LOG "github.com/vinllen/log4go" ) type Writer interface { // find current status FindStatus() (string, error) // update status UpdateStatus(status string) error // extract all checkpoint ExtractCheckpoint() (map[string]map[string]*Checkpoint, error) // extract single checkpoint ExtractSingleCheckpoint(table string) (map[string]*Checkpoint, error) // insert checkpoint Insert(ckpt *Checkpoint, table string) error // update checkpoint Update(shardId string, ckpt *Checkpoint, table string) error // update with set UpdateWithSet(shardId string, input map[string]interface{}, table string) error // query Query(shardId string, table string) (*Checkpoint, error) // insert incrSyncCacheFile IncrCacheFileInsert(table string, shardId string, fileName string, lastSequenceNumber string, time string) error // drop DropAll() error } func NewWriter(name, address, db string) Writer { var w Writer switch name { case CheckpointWriterTypeMongo: w = NewMongoWriter(address, db) case CheckpointWriterTypeFile: w = NewFileWriter(db) default: LOG.Crashf("unknown checkpoint writer[%v]", name) } if w == nil { LOG.Crashf("create checkpoint writer[%v] failed", name) return nil } return w }