forked from
tangled.org/core
Monorepo for Tangled — https://tangled.org
1package db
2
3import (
4 "log"
5 "time"
6)
7
8type Follow struct {
9 UserDid string
10 SubjectDid string
11 FollowedAt *time.Time
12 AtUri string
13}
14
15func (d *DB) AddFollow(userDid, subjectDid, atUri string) error {
16 query := `insert into follows (user_did, subject_did, at_uri) values (?, ?, ?)`
17 _, err := d.db.Exec(query, userDid, subjectDid, atUri)
18 return err
19}
20
21// Get a follow record
22func (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.AtUri)
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
45func (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}