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  }