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 }