Something went wrong. Try again.
This repository has no description
Something went wrong. Try again.
1.6 kB · 55 lines
Go
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556package model
import ( "context" "errors" "fmt"
glex "github.com/streamplace/glex/runtime" "gorm.io/gorm" "stream.place/streamplace/pkg/placestream")
type MetadataConfiguration struct { RepoDID string `json:"repoDID" gorm:"primarykey;column:repo_did"` Repo *Repo `json:"repo,omitempty" gorm:"foreignKey:DID;references:RepoDID"` Record *[]byte}
func (m *MetadataConfiguration) ToStreamplaceMetadataConfiguration() (placestream.MetadataConfiguration, error) { var sdm placestream.MetadataConfiguration if err := glex.DecodeCBOR(*m.Record, &sdm); err != nil { return placestream.MetadataConfiguration{}, fmt.Errorf("error decoding metadata configuration: %w", err) } return sdm, nil}
// CreateMetadataConfiguration stores a repo's metadata configuration. One row// per repo, no CID column: Save is already redelivery-safe. See CreateChatProfile.func (m *DBModel) CreateMetadataConfiguration(ctx context.Context, metadata *MetadataConfiguration) error { err := m.DB.Save(metadata).Error if err != nil { return err } return nil}
func (m *DBModel) GetMetadataConfiguration(ctx context.Context, repoDID string) (*MetadataConfiguration, error) { var metadata MetadataConfiguration err := m.DB.Where("repo_did = ?", repoDID).First(&metadata).Error if errors.Is(err, gorm.ErrRecordNotFound) { return nil, nil } if err != nil { return nil, err } return &metadata, nil}
func (m *DBModel) DeleteMetadataConfiguration(ctx context.Context, repoDID string) error { err := m.DB.Where("repo_did = ?", repoDID).Delete(&MetadataConfiguration{}).Error if err != nil { return err } return nil}