Something went wrong. Try again.
This repository has no description
Something went wrong. Try again.
1.9 kB · 71 lines
Go
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172package model
import ( "context" "errors" "fmt" "time"
"go.opentelemetry.io/otel" "gorm.io/gorm")
type SigningKey struct { DID string `gorm:"primaryKey;column:did" json:"did"` RepoDID string `gorm:"primaryKey;column:repo_did" json:"repoDID"` RKey string `gorm:"column:rkey;index" json:"rkey"` Repo *Repo `json:"repo,omitempty" gorm:"foreignKey:RepoDID;references:DID"` CreatedAt time.Time `json:"createdAt"` RevokedAt *time.Time `json:"revokedAt"`}
func (SigningKey) TableName() string { return "signing_keys"}
func (m *DBModel) UpdateSigningKey(key *SigningKey) error { return m.DB.Save(key).Error}
func (m *DBModel) GetSigningKey(ctx context.Context, did, repoDID string) (*SigningKey, error) { _, span := otel.Tracer("signer").Start(ctx, "GetSigningKey") defer span.End() var key SigningKey res := m.DB.Model(SigningKey{}).Where("did = ?", did).Where("repo_did = ?", repoDID).First(&key) if errors.Is(res.Error, gorm.ErrRecordNotFound) { return nil, nil } if key.RevokedAt != nil { return nil, fmt.Errorf("signing key revoked") } if res.Error != nil { return nil, res.Error } return &key, nil}
func (m *DBModel) GetSigningKeyByRKey(ctx context.Context, rkey string) (*SigningKey, error) { _, span := otel.Tracer("signer").Start(ctx, "GetSigningKeyByRKey") defer span.End() var key SigningKey res := m.DB.Model(SigningKey{}).Where("rkey = ?", rkey).First(&key) if errors.Is(res.Error, gorm.ErrRecordNotFound) { return nil, nil } if key.RevokedAt != nil { return nil, fmt.Errorf("signing key revoked") } if res.Error != nil { return nil, res.Error } return &key, nil}
func (m *DBModel) GetSigningKeysForRepo(repoDID string) ([]SigningKey, error) { var keys []SigningKey res := m.DB.Model(SigningKey{}).Where("repo_did = ?", repoDID).Find(&keys) if res.Error != nil { return nil, res.Error } return keys, nil}