github.com/code-to-go/safepool.lib@v0.0.0-20221205180519-ee25e63c226e/security/db.go (about) 1 package security 2 3 import ( 4 "github.com/code-to-go/safepool.lib/core" 5 "github.com/code-to-go/safepool.lib/sql" 6 ) 7 8 func sqlSetIdentity(i Identity) error { 9 i64, err := i.Base64() 10 if core.IsErr(err, "cannot serialize identity: %v") { 11 return err 12 } 13 14 _, err = sql.Exec("SET_IDENTITY", sql.Args{ 15 "id": i.Id(), 16 "i64": i64, 17 }) 18 return err 19 } 20 21 func sqlGetIdentities(onlyTrusted bool) ([]Identity, error) { 22 var q string 23 if onlyTrusted { 24 q = "GET_TRUSTED" 25 } else { 26 q = "GET_IDENTITY" 27 } 28 29 rows, err := sql.Query(q, sql.Args{}) 30 if core.IsErr(err, "cannot get trusted identities from db: %v") { 31 return nil, err 32 } 33 defer rows.Close() 34 35 var identities []Identity 36 for rows.Next() { 37 var i64 string 38 err = rows.Scan(&i64) 39 if !core.IsErr(err, "cannot read pool heads from db: %v") { 40 continue 41 } 42 43 i, err := IdentityFromBase64(i64) 44 if !core.IsErr(err, "invalid identity record '%s': %v", i64) { 45 identities = append(identities, i) 46 } 47 } 48 return identities, nil 49 } 50 51 func sqlSetTrust(i Identity, trusted bool) error { 52 _, err := sql.Exec("SET_TRUSTED", sql.Args{ 53 "id": i.Id(), 54 "trusted": trusted, 55 }) 56 return err 57 }