forked from
tangled.org/core
Monorepo for Tangled
1package db
2
3import (
4 "time"
5
6 "tangled.org/core/appview/models"
7)
8
9func AddPublicKey(e Execer, did, name, key, rkey string) error {
10 _, err := e.Exec(
11 `insert or ignore into public_keys (did, name, key, rkey)
12 values (?, ?, ?, ?)`,
13 did, name, key, rkey)
14 return err
15}
16
17func UpdatePublicKey(e Execer, did, name, key, rkey string) error {
18 _, err := e.Exec(
19 `update public_keys set name = ? where did = ? and key = ? and rkey = ?`,
20 name, did, key, rkey)
21 return err
22}
23
24func DeletePublicKey(e Execer, did, name, key string) error {
25 _, err := e.Exec(`
26 delete from public_keys
27 where did = ? and name = ? and key = ?`,
28 did, name, key)
29 return err
30}
31
32func DeletePublicKeyByRkey(e Execer, did, rkey string) error {
33 _, err := e.Exec(`
34 delete from public_keys
35 where did = ? and rkey = ?`,
36 did, rkey)
37 return err
38}
39
40func GetAllPublicKeys(e Execer) ([]models.PublicKey, error) {
41 var keys []models.PublicKey
42
43 rows, err := e.Query(`select key, name, did, rkey, created from public_keys`)
44 if err != nil {
45 return nil, err
46 }
47 defer rows.Close()
48
49 for rows.Next() {
50 var publicKey models.PublicKey
51 var createdAt string
52 if err := rows.Scan(&publicKey.Key, &publicKey.Name, &publicKey.Did, &publicKey.Rkey, &createdAt); err != nil {
53 return nil, err
54 }
55 createdAtTime, _ := time.Parse(time.RFC3339, createdAt)
56 publicKey.Created = &createdAtTime
57 keys = append(keys, publicKey)
58 }
59
60 if err := rows.Err(); err != nil {
61 return nil, err
62 }
63
64 return keys, nil
65}
66
67func GetPublicKeysForDid(e Execer, did string) ([]models.PublicKey, error) {
68 var keys []models.PublicKey
69
70 rows, err := e.Query(`select did, key, name, rkey, created from public_keys where did = ?`, did)
71 if err != nil {
72 return nil, err
73 }
74 defer rows.Close()
75
76 for rows.Next() {
77 var publicKey models.PublicKey
78 var createdAt string
79 if err := rows.Scan(&publicKey.Did, &publicKey.Key, &publicKey.Name, &publicKey.Rkey, &createdAt); err != nil {
80 return nil, err
81 }
82 createdAtTime, _ := time.Parse(time.RFC3339, createdAt)
83 publicKey.Created = &createdAtTime
84 keys = append(keys, publicKey)
85 }
86
87 if err := rows.Err(); err != nil {
88 return nil, err
89 }
90
91 return keys, nil
92}