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