this repo has no description
1package db
2
3import (
4 "time"
5
6 "github.com/sotangled/tangled/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("2006-01-02 15:04:05.99999999 -0700 MST m=-0000.000000000")
34 }
35
36 query := `insert 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]interface{} {
48 return map[string]interface{}{
49 pk.Did: map[string]interface{}{
50 "key": pk.Key,
51 "created": pk.Created,
52 },
53 }
54}
55
56func (d *DB) GetAllPublicKeys() ([]PublicKey, error) {
57 var keys []PublicKey
58
59 rows, err := d.db.Query(`select key, did, created from public_keys`)
60 if err != nil {
61 return nil, err
62 }
63 defer rows.Close()
64
65 for rows.Next() {
66 var publicKey PublicKey
67 if err := rows.Scan(&publicKey.Key, &publicKey.Did, &publicKey.Created); err != nil {
68 return nil, err
69 }
70 keys = append(keys, publicKey)
71 }
72
73 if err := rows.Err(); err != nil {
74 return nil, err
75 }
76
77 return keys, nil
78}
79
80func (d *DB) GetPublicKeys(did string) ([]PublicKey, error) {
81 var keys []PublicKey
82
83 rows, err := d.db.Query(`select did, key, created from public_keys where did = ?`, did)
84 if err != nil {
85 return nil, err
86 }
87 defer rows.Close()
88
89 for rows.Next() {
90 var publicKey PublicKey
91 if err := rows.Scan(&publicKey.Did, &publicKey.Key, &publicKey.Created); err != nil {
92 return nil, err
93 }
94 keys = append(keys, publicKey)
95 }
96
97 if err := rows.Err(); err != nil {
98 return nil, err
99 }
100
101 return keys, nil
102}