forked from
tangled.org/core
fork
Configure Feed
Select the types of activity you want to include in your feed.
Monorepo for Tangled
fork
Configure Feed
Select the types of activity you want to include in your feed.
1package db
2
3import (
4 "time"
5
6 "tangled.sh/tangled.sh/core/api/tangled"
7)
8
9type PublicKey struct {
10 Did string
11 tangled.PublicKey
12}
13
14func (d *DB) AddPublicKeyFromRecord(did string, recordIface map[string]interface{}) error {
15 record := make(map[string]string)
16 for k, v := range recordIface {
17 if str, ok := v.(string); ok {
18 record[k] = str
19 }
20 }
21
22 pk := PublicKey{
23 Did: did,
24 }
25 pk.Key = record["key"]
26 pk.Created = record["created"]
27
28 return d.AddPublicKey(pk)
29}
30
31func (d *DB) AddPublicKey(pk PublicKey) error {
32 if pk.Created == "" {
33 pk.Created = time.Now().Format(time.RFC3339)
34 }
35
36 query := `insert or ignore into public_keys (did, key, created) values (?, ?, ?)`
37 _, err := d.db.Exec(query, pk.Did, pk.Key, pk.Created)
38 return err
39}
40
41func (d *DB) RemovePublicKey(did string) error {
42 query := `delete from public_keys where did = ?`
43 _, err := d.db.Exec(query, did)
44 return err
45}
46
47func (pk *PublicKey) JSON() map[string]any {
48 return map[string]any{
49 "did": pk.Did,
50 "key": pk.Key,
51 "created": pk.Created,
52 }
53}
54
55func (d *DB) GetAllPublicKeys() ([]PublicKey, error) {
56 var keys []PublicKey
57
58 rows, err := d.db.Query(`select key, did, created from public_keys`)
59 if err != nil {
60 return nil, err
61 }
62 defer rows.Close()
63
64 for rows.Next() {
65 var publicKey PublicKey
66 if err := rows.Scan(&publicKey.Key, &publicKey.Did, &publicKey.Created); err != nil {
67 return nil, err
68 }
69 keys = append(keys, publicKey)
70 }
71
72 if err := rows.Err(); err != nil {
73 return nil, err
74 }
75
76 return keys, nil
77}
78
79func (d *DB) GetPublicKeys(did string) ([]PublicKey, error) {
80 var keys []PublicKey
81
82 rows, err := d.db.Query(`select did, key, created from public_keys where did = ?`, did)
83 if err != nil {
84 return nil, err
85 }
86 defer rows.Close()
87
88 for rows.Next() {
89 var publicKey PublicKey
90 if err := rows.Scan(&publicKey.Did, &publicKey.Key, &publicKey.Created); err != nil {
91 return nil, err
92 }
93 keys = append(keys, publicKey)
94 }
95
96 if err := rows.Err(); err != nil {
97 return nil, err
98 }
99
100 return keys, nil
101}