this repo has no description
1package db
2
3import (
4 "time"
5
6 tangled "github.com/icyphox/bild/api/tangled"
7)
8
9type PublicKey struct {
10 Did string
11 tangled.PublicKey
12}
13
14func (d *DB) AddPublicKeyFromRecord(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: record["did"],
24 }
25 pk.Name = record["name"]
26 pk.Key = record["key"]
27 pk.Created = record["created"]
28
29 return d.AddPublicKey(pk)
30}
31
32func (d *DB) AddPublicKey(pk PublicKey) error {
33 if pk.Created == "" {
34 pk.Created = time.Now().Format("2006-01-02 15:04:05.99999999 -0700 MST m=-0000.000000000")
35 }
36
37 query := `insert into public_keys (did, name, key, created) values (?, ?, ?, ?)`
38 _, err := d.db.Exec(query, pk.Did, pk.Name, pk.Key, pk.Created)
39 return err
40}
41
42func (d *DB) RemovePublicKey(did string) error {
43 query := `delete from public_keys where did = ?`
44 _, err := d.db.Exec(query, did)
45 return err
46}
47
48func (pk *PublicKey) JSON() map[string]interface{} {
49 return map[string]interface{}{
50 pk.Did: map[string]interface{}{
51 "key": pk.Key,
52 "name": pk.Name,
53 "created": pk.Created,
54 },
55 }
56}
57
58func (d *DB) GetAllPublicKeys() ([]PublicKey, error) {
59 var keys []PublicKey
60
61 rows, err := d.db.Query(`select key, name, did, created from public_keys`)
62 if err != nil {
63 return nil, err
64 }
65 defer rows.Close()
66
67 for rows.Next() {
68 var publicKey PublicKey
69 if err := rows.Scan(&publicKey.Key, &publicKey.Name, &publicKey.Did, &publicKey.Created); err != nil {
70 return nil, err
71 }
72 keys = append(keys, publicKey)
73 }
74
75 if err := rows.Err(); err != nil {
76 return nil, err
77 }
78
79 return keys, nil
80}
81
82func (d *DB) GetPublicKeys(did string) ([]PublicKey, error) {
83 var keys []PublicKey
84
85 rows, err := d.db.Query(`select did, key, name, created from public_keys where did = ?`, did)
86 if err != nil {
87 return nil, err
88 }
89 defer rows.Close()
90
91 for rows.Next() {
92 var publicKey PublicKey
93 if err := rows.Scan(&publicKey.Did, &publicKey.Key, &publicKey.Name, &publicKey.Created); err != nil {
94 return nil, err
95 }
96 keys = append(keys, publicKey)
97 }
98
99 if err := rows.Err(); err != nil {
100 return nil, err
101 }
102
103 return keys, nil
104}