forked from
tangled.org/core
fork
Configure Feed
Select the types of activity you want to include in your feed.
this repo has no description
fork
Configure Feed
Select the types of activity you want to include in your feed.
1package db
2
3import (
4 "encoding/json"
5 "time"
6)
7
8func AddPublicKey(e Execer, did, name, key, rkey string) error {
9 _, err := e.Exec(
10 `insert or ignore into public_keys (did, name, key, rkey)
11 values (?, ?, ?, ?)`,
12 did, name, key, rkey)
13 return err
14}
15
16func DeletePublicKey(e Execer, did, name, key string) error {
17 _, err := e.Exec(`
18 delete from public_keys
19 where did = ? and name = ? and key = ?`,
20 did, name, key)
21 return err
22}
23
24func DeletePublicKeyByRkey(e Execer, did, rkey string) error {
25 _, err := e.Exec(`
26 delete from public_keys
27 where did = ? and rkey = ?`,
28 did, rkey)
29 return err
30}
31
32type PublicKey struct {
33 Did string `json:"did"`
34 Key string `json:"key"`
35 Name string `json:"name"`
36 Rkey string `json:"rkey"`
37 Created *time.Time
38}
39
40func (p PublicKey) MarshalJSON() ([]byte, error) {
41 type Alias PublicKey
42 return json.Marshal(&struct {
43 Created string `json:"created"`
44 *Alias
45 }{
46 Created: p.Created.Format(time.RFC3339),
47 Alias: (*Alias)(&p),
48 })
49}
50
51func GetAllPublicKeys(e Execer) ([]PublicKey, error) {
52 var keys []PublicKey
53
54 rows, err := e.Query(`select key, name, did, rkey, created from public_keys`)
55 if err != nil {
56 return nil, err
57 }
58 defer rows.Close()
59
60 for rows.Next() {
61 var publicKey PublicKey
62 var createdAt string
63 if err := rows.Scan(&publicKey.Key, &publicKey.Name, &publicKey.Did, &publicKey.Rkey, &createdAt); err != nil {
64 return nil, err
65 }
66 createdAtTime, _ := time.Parse(time.RFC3339, createdAt)
67 publicKey.Created = &createdAtTime
68 keys = append(keys, publicKey)
69 }
70
71 if err := rows.Err(); err != nil {
72 return nil, err
73 }
74
75 return keys, nil
76}
77
78func GetPublicKeys(e Execer, did string) ([]PublicKey, error) {
79 var keys []PublicKey
80
81 rows, err := e.Query(`select did, key, name, rkey, created from public_keys where did = ?`, did)
82 if err != nil {
83 return nil, err
84 }
85 defer rows.Close()
86
87 for rows.Next() {
88 var publicKey PublicKey
89 var createdAt string
90 if err := rows.Scan(&publicKey.Did, &publicKey.Key, &publicKey.Name, &publicKey.Rkey, &createdAt); err != nil {
91 return nil, err
92 }
93 createdAtTime, _ := time.Parse(time.RFC3339, createdAt)
94 publicKey.Created = &createdAtTime
95 keys = append(keys, publicKey)
96 }
97
98 if err := rows.Err(); err != nil {
99 return nil, err
100 }
101
102 return keys, nil
103}