Live video on the AT Protocol
at natb/i18next-cli 57 lines 1.5 kB view raw
1package model 2 3import ( 4 "context" 5 "errors" 6 "fmt" 7 8 lexutil "github.com/bluesky-social/indigo/lex/util" 9 "gorm.io/gorm" 10 "stream.place/streamplace/pkg/streamplace" 11) 12 13type MetadataConfiguration struct { 14 RepoDID string `json:"repoDID" gorm:"primarykey;column:repo_did"` 15 Repo *Repo `json:"repo,omitempty" gorm:"foreignKey:DID;references:RepoDID"` 16 Record *[]byte 17} 18 19func (m *MetadataConfiguration) ToStreamplaceMetadataConfiguration() (*streamplace.MetadataConfiguration, error) { 20 rec, err := lexutil.CborDecodeValue(*m.Record) 21 if err != nil { 22 return nil, fmt.Errorf("error decoding feed post: %w", err) 23 } 24 sdm, ok := rec.(*streamplace.MetadataConfiguration) 25 if !ok { 26 return nil, fmt.Errorf("invalid metadata configuration") 27 } 28 return sdm, nil 29} 30 31func (m *DBModel) CreateMetadataConfiguration(ctx context.Context, metadata *MetadataConfiguration) error { 32 err := m.DB.Save(metadata).Error 33 if err != nil { 34 return err 35 } 36 return nil 37} 38 39func (m *DBModel) GetMetadataConfiguration(ctx context.Context, repoDID string) (*MetadataConfiguration, error) { 40 var metadata MetadataConfiguration 41 err := m.DB.Where("repo_did = ?", repoDID).First(&metadata).Error 42 if errors.Is(err, gorm.ErrRecordNotFound) { 43 return nil, nil 44 } 45 if err != nil { 46 return nil, err 47 } 48 return &metadata, nil 49} 50 51func (m *DBModel) DeleteMetadataConfiguration(ctx context.Context, repoDID string) error { 52 err := m.DB.Where("repo_did = ?", repoDID).Delete(&MetadataConfiguration{}).Error 53 if err != nil { 54 return err 55 } 56 return nil 57}