An atproto PDS written in Go
at push-based 52 lines 1.5 kB view raw
1package server 2 3import ( 4 "context" 5 6 "github.com/haileyok/cocoon/models" 7 "gorm.io/gorm" 8) 9 10func (s *Server) getActorByHandle(ctx context.Context, handle string) (*models.Actor, error) { 11 var actor models.Actor 12 if err := s.db.First(ctx, &actor, models.Actor{Handle: handle}).Error; err != nil { 13 return nil, err 14 } 15 if actor.Did == "" { 16 return nil, gorm.ErrRecordNotFound 17 } 18 return &actor, nil 19} 20 21func (s *Server) getRepoByEmail(ctx context.Context, email string) (*models.Repo, error) { 22 var repo models.Repo 23 if err := s.db.First(ctx, &repo, models.Repo{Email: email}).Error; err != nil { 24 return nil, err 25 } 26 if repo.Did == "" { 27 return nil, gorm.ErrRecordNotFound 28 } 29 return &repo, nil 30} 31 32func (s *Server) getRepoActorByEmail(ctx context.Context, email string) (*models.RepoActor, error) { 33 var repo models.RepoActor 34 if err := s.db.Raw(ctx, "SELECT r.*, a.* FROM repos r LEFT JOIN actors a ON r.did = a.did WHERE r.email= ?", nil, email).Scan(&repo).Error; err != nil { 35 return nil, err 36 } 37 if repo.Repo.Did == "" { 38 return nil, gorm.ErrRecordNotFound 39 } 40 return &repo, nil 41} 42 43func (s *Server) getRepoActorByDid(ctx context.Context, did string) (*models.RepoActor, error) { 44 var repo models.RepoActor 45 if err := s.db.Raw(ctx, "SELECT r.*, a.* FROM repos r LEFT JOIN actors a ON r.did = a.did WHERE r.did = ?", nil, did).Scan(&repo).Error; err != nil { 46 return nil, err 47 } 48 if repo.Repo.Did == "" { 49 return nil, gorm.ErrRecordNotFound 50 } 51 return &repo, nil 52}