github.com/code-to-go/safepool.lib@v0.0.0-20221205180519-ee25e63c226e/sql/access.go2 (about) 1 package sql 2 3 import ( 4 "encoding/json" 5 "github.com/code-to-go/safepool.lib/core" 6 "github.com/code-to-go/safepool.lib/model" 7 ) 8 9 func GetDomains() ([]string, error) { 10 var domains []string 11 rows, err := Query("GET_DOMAINS", nil) 12 if err != nil { 13 return nil, err 14 } 15 16 for rows.Next() { 17 var domain string 18 err = rows.Scan(&domain) 19 if err != nil { 20 return nil, err 21 } 22 domains = append(domains, domain) 23 } 24 return domains, nil 25 } 26 27 func SetAccess(a model.Transport) error { 28 29 data, err := json.Marshal(a) 30 if core.IsErr(err, "cannot serialize access config for domain %s: %v", a.Domain) { 31 return err 32 } 33 _, err = Exec("SET_ACCESS", Args{"domain": a.Domain, "granted": a.Granted, "config": data}) 34 return err 35 } 36 37 // GetAccess returns domain specific information (i.e. transport configuration) 38 func GetAccess(domain string) (model.Transport, error) { 39 var data []byte 40 var access model.Transport 41 42 err := QueryRow("GET_ACCESS", Args{"domain": domain}, &data) 43 if core.IsErr(err, "cannot get access for domain %s: %v", domain) { 44 return access, err 45 } 46 47 err = json.Unmarshal(data, &access) 48 core.IsErr(err, "cannot deserialize access for domain %s: %v", domain) 49 return access, err 50 }