Live video on the AT Protocol
79
fork

Configure Feed

Select the types of activity you want to include in your feed.

at v0.7.26 71 lines 1.9 kB view raw
1package model 2 3import ( 4 "context" 5 "errors" 6 "fmt" 7 "time" 8 9 "go.opentelemetry.io/otel" 10 "gorm.io/gorm" 11) 12 13type SigningKey struct { 14 DID string `gorm:"primaryKey;column:did" json:"did"` 15 RepoDID string `gorm:"primaryKey;column:repo_did" json:"repoDID"` 16 RKey string `gorm:"column:rkey;index" json:"rkey"` 17 Repo *Repo `json:"repo,omitempty" gorm:"foreignKey:RepoDID;references:DID"` 18 CreatedAt time.Time `json:"createdAt"` 19 RevokedAt *time.Time `json:"revokedAt"` 20} 21 22func (SigningKey) TableName() string { 23 return "signing_keys" 24} 25 26func (m *DBModel) UpdateSigningKey(key *SigningKey) error { 27 return m.DB.Save(key).Error 28} 29 30func (m *DBModel) GetSigningKey(ctx context.Context, did, repoDID string) (*SigningKey, error) { 31 _, span := otel.Tracer("signer").Start(ctx, "GetSigningKey") 32 defer span.End() 33 var key SigningKey 34 res := m.DB.Model(SigningKey{}).Where("did = ?", did).Where("repo_did = ?", repoDID).First(&key) 35 if errors.Is(res.Error, gorm.ErrRecordNotFound) { 36 return nil, nil 37 } 38 if key.RevokedAt != nil { 39 return nil, fmt.Errorf("signing key revoked") 40 } 41 if res.Error != nil { 42 return nil, res.Error 43 } 44 return &key, nil 45} 46 47func (m *DBModel) GetSigningKeyByRKey(ctx context.Context, rkey string) (*SigningKey, error) { 48 _, span := otel.Tracer("signer").Start(ctx, "GetSigningKeyByRKey") 49 defer span.End() 50 var key SigningKey 51 res := m.DB.Model(SigningKey{}).Where("rkey = ?", rkey).First(&key) 52 if errors.Is(res.Error, gorm.ErrRecordNotFound) { 53 return nil, nil 54 } 55 if key.RevokedAt != nil { 56 return nil, fmt.Errorf("signing key revoked") 57 } 58 if res.Error != nil { 59 return nil, res.Error 60 } 61 return &key, nil 62} 63 64func (m *DBModel) GetSigningKeysForRepo(repoDID string) ([]SigningKey, error) { 65 var keys []SigningKey 66 res := m.DB.Model(SigningKey{}).Where("repo_did = ?", repoDID).Find(&keys) 67 if res.Error != nil { 68 return nil, res.Error 69 } 70 return keys, nil 71}