forked from tangled.org/core
this repo has no description
1package db 2 3import ( 4 "encoding/json" 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 32type PublicKey struct { 33 Did string `json:"did"` 34 Key string `json:"key"` 35 Name string `json:"name"` 36 Rkey string `json:"rkey"` 37 Created *time.Time 38} 39 40func (p PublicKey) MarshalJSON() ([]byte, error) { 41 type Alias PublicKey 42 return json.Marshal(&struct { 43 Created string `json:"created"` 44 *Alias 45 }{ 46 Created: p.Created.Format(time.RFC3339), 47 Alias: (*Alias)(&p), 48 }) 49} 50 51func GetAllPublicKeys(e Execer) ([]PublicKey, error) { 52 var keys []PublicKey 53 54 rows, err := e.Query(`select key, name, did, rkey, created from public_keys`) 55 if err != nil { 56 return nil, err 57 } 58 defer rows.Close() 59 60 for rows.Next() { 61 var publicKey PublicKey 62 var createdAt string 63 if err := rows.Scan(&publicKey.Key, &publicKey.Name, &publicKey.Did, &publicKey.Rkey, &createdAt); err != nil { 64 return nil, err 65 } 66 createdAtTime, _ := time.Parse(time.RFC3339, createdAt) 67 publicKey.Created = &createdAtTime 68 keys = append(keys, publicKey) 69 } 70 71 if err := rows.Err(); err != nil { 72 return nil, err 73 } 74 75 return keys, nil 76} 77 78func GetPublicKeys(e Execer, did string) ([]PublicKey, error) { 79 var keys []PublicKey 80 81 rows, err := e.Query(`select did, key, name, rkey, created from public_keys where did = ?`, did) 82 if err != nil { 83 return nil, err 84 } 85 defer rows.Close() 86 87 for rows.Next() { 88 var publicKey PublicKey 89 var createdAt string 90 if err := rows.Scan(&publicKey.Did, &publicKey.Key, &publicKey.Name, &publicKey.Rkey, &createdAt); err != nil { 91 return nil, err 92 } 93 createdAtTime, _ := time.Parse(time.RFC3339, createdAt) 94 publicKey.Created = &createdAtTime 95 keys = append(keys, publicKey) 96 } 97 98 if err := rows.Err(); err != nil { 99 return nil, err 100 } 101 102 return keys, nil 103}