github.com/cozy/cozy-stack@v0.0.0-20240603063001-31110fa4cae1/model/settings/storage_couchdb.go (about) 1 package settings 2 3 import ( 4 "fmt" 5 6 "github.com/cozy/cozy-stack/pkg/consts" 7 "github.com/cozy/cozy-stack/pkg/couchdb" 8 "github.com/cozy/cozy-stack/pkg/prefixer" 9 ) 10 11 // CouchdbStorage handle all the settings data in couchdb. 12 type CouchdbStorage struct { 13 } 14 15 // NewCouchdbStorage instantiates a new [CouchdbStorage]. 16 func NewCouchdbStorage() *CouchdbStorage { 17 return &CouchdbStorage{} 18 } 19 20 func (s *CouchdbStorage) setInstanceSettings(db prefixer.Prefixer, doc *couchdb.JSONDoc) error { 21 if doc.DocType() != consts.Settings { 22 return ErrInvalidType 23 } 24 25 if doc.ID() != consts.InstanceSettingsID { 26 return fmt.Errorf("%w: have %q, expected %q", ErrInvalidID, doc.ID(), consts.InstanceSettingsID) 27 } 28 29 return couchdb.UpdateDoc(db, doc) 30 } 31 32 func (s *CouchdbStorage) getInstanceSettings(db prefixer.Prefixer) (*couchdb.JSONDoc, error) { 33 doc := &couchdb.JSONDoc{} 34 35 err := couchdb.GetDoc(db, consts.Settings, consts.InstanceSettingsID, doc) 36 if err != nil { 37 return nil, err 38 } 39 40 doc.Type = consts.Settings 41 42 return doc, nil 43 }