forked from
hailey.at/cocoon
An atproto PDS written in Go
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}