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