github.com/code-to-go/safepool.lib@v0.0.0-20221205180519-ee25e63c226e/api/api.go (about)

     1  package api
     2  
     3  import (
     4  	_ "embed"
     5  
     6  	"github.com/code-to-go/safepool.lib/core"
     7  	"github.com/code-to-go/safepool.lib/security"
     8  	"github.com/code-to-go/safepool.lib/sql"
     9  )
    10  
    11  var Self security.Identity
    12  
    13  //go:embed sqlite.sql
    14  var sqlliteDDL string
    15  
    16  func Start() {
    17  	sql.InitDDL = sqlliteDDL
    18  
    19  	err := sql.OpenDB()
    20  	if err != nil {
    21  		panic("cannot open DB")
    22  	}
    23  
    24  	s, _, _, ok := sqlGetConfig("", "SELF")
    25  	if ok {
    26  		Self, err = security.IdentityFromBase64(s)
    27  	} else {
    28  		Self, err = security.NewIdentity("Change Me")
    29  		if err == nil {
    30  			s, err = Self.Base64()
    31  			if err == nil {
    32  				err = sqlSetConfig("", "SELF", s, 0, nil)
    33  			}
    34  		}
    35  	}
    36  	if err != nil {
    37  		panic("corrupted identity in DB")
    38  	}
    39  
    40  }
    41  
    42  func SetNick(nick string) error {
    43  	Self.Nick = nick
    44  	s, err := Self.Base64()
    45  	if core.IsErr(err, "cannot serialize self to db: %v") {
    46  		return err
    47  	}
    48  	err = sqlSetConfig("", "SELF", s, 0, nil)
    49  	core.IsErr(err, "cannot save nick to db: %v")
    50  	return err
    51  }