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  }