Live video on the AT Protocol
at natb/docs-openapi 49 lines 1.3 kB view raw
1package model 2 3import ( 4 "context" 5 "errors" 6 "time" 7 8 "go.opentelemetry.io/otel" 9 "gorm.io/gorm" 10) 11 12type SigningKey struct { 13 DID string `gorm:"primaryKey;column:did" json:"did"` 14 RepoDID string `gorm:"primaryKey;column:repo_did" json:"repoDID"` 15 Repo *Repo `json:"repo,omitempty" gorm:"foreignKey:RepoDID;references:DID"` 16 CreatedAt time.Time `json:"createdAt"` 17 RevokedAt time.Time `json:"revokedAt"` 18} 19 20func (SigningKey) TableName() string { 21 return "signing_keys" 22} 23 24func (m *DBModel) UpdateSigningKey(key *SigningKey) error { 25 return m.DB.Save(key).Error 26} 27 28func (m *DBModel) GetSigningKey(ctx context.Context, did, repoDID string) (*SigningKey, error) { 29 _, span := otel.Tracer("signer").Start(ctx, "GetSigningKey") 30 defer span.End() 31 var key SigningKey 32 res := m.DB.Model(SigningKey{}).Where("did = ?", did).Where("repo_did = ?", repoDID).First(&key) 33 if errors.Is(res.Error, gorm.ErrRecordNotFound) { 34 return nil, nil 35 } 36 if res.Error != nil { 37 return nil, res.Error 38 } 39 return &key, nil 40} 41 42func (m *DBModel) GetSigningKeysForRepo(repoDID string) ([]SigningKey, error) { 43 var keys []SigningKey 44 res := m.DB.Model(SigningKey{}).Where("repo_did = ?", repoDID).Find(&keys) 45 if res.Error != nil { 46 return nil, res.Error 47 } 48 return keys, nil 49}