48 lines
1.2 kB
1
package db
2
3
import (
4
"log"
5
"time"
6
)
7
8
type Follow struct {
9
UserDid string
10
SubjectDid string
11
FollowedAt *time.Time
12
RKey string
13
}
14
15
func (d *DB) AddFollow(userDid, subjectDid, rkey string) error {
16
query := `insert or ignore into follows (user_did, subject_did, rkey) values (?, ?, ?)`
17
_, err := d.db.Exec(query, userDid, subjectDid, rkey)
18
return err
19
}
20
21
// Get a follow record
22
func (d *DB) GetFollow(userDid, subjectDid string) (*Follow, error) {
23
query := `select user_did, subject_did, followed_at, at_uri from follows where user_did = ? and subject_did = ?`
24
row := d.db.QueryRow(query, userDid, subjectDid)
25
26
var follow Follow
27
var followedAt string
28
err := row.Scan(&follow.UserDid, &follow.SubjectDid, &followedAt, &follow.RKey)
29
if err != nil {
30
return nil, err
31
}
32
33
followedAtTime, err := time.Parse(time.RFC3339, followedAt)
34
if err != nil {
35
log.Println("unable to determine followed at time")
36
follow.FollowedAt = nil
37
} else {
38
follow.FollowedAt = &followedAtTime
39
}
40
41
return &follow, nil
42
}
43
44
// Get a follow record
45
func (d *DB) DeleteFollow(userDid, subjectDid string) error {
46
_, err := d.db.Exec(`delete from follows where user_did = ? and subject_did = ?`, userDid, subjectDid)
47
return err
48
}
49