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  }