1package db
2
3import (
4 "time"
5
6 "github.com/bluesky-social/indigo/atproto/syntax"
7)
8
9type SpindleMember struct {
10 Id int
11 Did syntax.DID // owner of the record
12 Rkey string // rkey of the record
13 Instance string
14 Subject syntax.DID // the member being added
15 Created time.Time
16}
17
18func AddSpindleMember(db *DB, member SpindleMember) error {
19 _, err := db.Exec(
20 `insert or ignore into spindle_members (did, rkey, instance, subject) values (?, ?, ?, ?)`,
21 member.Did,
22 member.Rkey,
23 member.Instance,
24 member.Subject,
25 )
26 return err
27}
28
29func RemoveSpindleMember(db *DB, owner_did, rkey string) error {
30 _, err := db.Exec(
31 "delete from spindle_members where did = ? and rkey = ?",
32 owner_did,
33 rkey,
34 )
35 return err
36}
37
38func GetSpindleMember(db *DB, did, rkey string) (*SpindleMember, error) {
39 query :=
40 `select id, did, rkey, instance, subject, created
41 from spindle_members
42 where did = ? and rkey = ?`
43
44 var member SpindleMember
45 var createdAt string
46 err := db.QueryRow(query, did, rkey).Scan(
47 &member.Id,
48 &member.Did,
49 &member.Rkey,
50 &member.Instance,
51 &member.Subject,
52 &createdAt,
53 )
54 if err != nil {
55 return nil, err
56 }
57
58 return &member, nil
59}