forked from tangled.org/core
this repo has no description
at file-tree 2.0 kB view raw
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}