Live video on the AT Protocol
at eli/docker-linting 50 lines 1.3 kB view raw
1package model 2 3import ( 4 "errors" 5 6 "gorm.io/gorm" 7 "stream.place/streamplace/pkg/oproxy" 8) 9 10func (m *DBModel) CreateOAuthSession(id string, session *oproxy.OAuthSession) error { 11 return m.DB.Create(session).Error 12} 13 14func (m *DBModel) LoadOAuthSession(id string) (*oproxy.OAuthSession, error) { 15 var session oproxy.OAuthSession 16 if err := m.DB.Where("downstream_dpop_jkt = ?", id).First(&session).Error; err != nil { 17 if errors.Is(err, gorm.ErrRecordNotFound) { 18 return nil, nil 19 } 20 return nil, err 21 } 22 return &session, nil 23} 24 25func (m *DBModel) UpdateOAuthSession(id string, session *oproxy.OAuthSession) error { 26 res := m.DB.Model(&oproxy.OAuthSession{}).Where("downstream_dpop_jkt = ?", id).Updates(session) 27 if res.Error != nil { 28 return res.Error 29 } 30 if res.RowsAffected == 0 { 31 return errors.New("no rows affected") 32 } 33 return nil 34} 35 36func (m *DBModel) ListOAuthSessions() ([]oproxy.OAuthSession, error) { 37 var sessions []oproxy.OAuthSession 38 if err := m.DB.Find(&sessions).Error; err != nil { 39 return nil, err 40 } 41 return sessions, nil 42} 43 44func (m *DBModel) GetSessionByDID(did string) (*oproxy.OAuthSession, error) { 45 var session oproxy.OAuthSession 46 if err := m.DB.Where("repo_did = ? AND revoked_at IS NULL", did).Order("updated_at DESC").First(&session).Error; err != nil { 47 return nil, err 48 } 49 return &session, nil 50}