1package db
2
3import (
4 "tangled.org/core/appview/models"
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
32func GetAllPublicKeys(e Execer) ([]models.PublicKey, error) {
33 var keys []models.PublicKey
34
35 rows, err := e.Query(`select key, name, did, rkey, created from public_keys`)
36 if err != nil {
37 return nil, err
38 }
39 defer rows.Close()
40
41 for rows.Next() {
42 var publicKey models.PublicKey
43 var createdAt string
44 if err := rows.Scan(&publicKey.Key, &publicKey.Name, &publicKey.Did, &publicKey.Rkey, &createdAt); err != nil {
45 return nil, err
46 }
47 createdAtTime, _ := time.Parse(time.RFC3339, createdAt)
48 publicKey.Created = &createdAtTime
49 keys = append(keys, publicKey)
50 }
51
52 if err := rows.Err(); err != nil {
53 return nil, err
54 }
55
56 return keys, nil
57}
58
59func GetPublicKeysForDid(e Execer, did string) ([]models.PublicKey, error) {
60 var keys []models.PublicKey
61
62 rows, err := e.Query(`select did, key, name, rkey, created from public_keys where did = ?`, did)
63 if err != nil {
64 return nil, err
65 }
66 defer rows.Close()
67
68 for rows.Next() {
69 var publicKey models.PublicKey
70 var createdAt string
71 if err := rows.Scan(&publicKey.Did, &publicKey.Key, &publicKey.Name, &publicKey.Rkey, &createdAt); err != nil {
72 return nil, err
73 }
74 createdAtTime, _ := time.Parse(time.RFC3339, createdAt)
75 publicKey.Created = &createdAtTime
76 keys = append(keys, publicKey)
77 }
78
79 if err := rows.Err(); err != nil {
80 return nil, err
81 }
82
83 return keys, nil
84}