forked from tildetown/town
WIP insert helper
parent
c4c02533e7
commit
55eb4b7010
|
@ -2,6 +2,8 @@ package main
|
|||
|
||||
import (
|
||||
"database/sql"
|
||||
"encoding/json"
|
||||
"errors"
|
||||
"fmt"
|
||||
"os"
|
||||
|
||||
|
@ -10,22 +12,64 @@ import (
|
|||
"git.tilde.town/tildetown/town/towndb"
|
||||
)
|
||||
|
||||
// TODO this command adds a new user to /town/var/town.db
|
||||
// it's meant to be invoked by the welcome binary upon successfully
|
||||
// creating a new user account
|
||||
// this command adds a new user to /town/var/town.db. it's meant to be invoked
|
||||
// by the welcome binary upon successfully creating a new user account
|
||||
|
||||
func _main(db *sql.DB) error {
|
||||
return nil
|
||||
func _main(tdb *sql.DB, userData towndb.TownUser) error {
|
||||
if userData.Username == "" {
|
||||
return errors.New("no username")
|
||||
}
|
||||
|
||||
if len(userData.Emails) == 0 {
|
||||
return errors.New("no email set")
|
||||
}
|
||||
|
||||
for _, e := range userData.Emails {
|
||||
if e == "" {
|
||||
return errors.New("blank email in email list")
|
||||
}
|
||||
}
|
||||
|
||||
if userData.IsAdmin {
|
||||
return errors.New("please stop")
|
||||
}
|
||||
|
||||
if userData.State != towndb.StateActive {
|
||||
return errors.New("bad state")
|
||||
}
|
||||
|
||||
return userData.Insert(tdb)
|
||||
}
|
||||
|
||||
func parseInput(stdin *os.File) (u towndb.TownUser, err error) {
|
||||
var n int
|
||||
input := make([]byte, 3000) // arbitrary
|
||||
if n, err = stdin.Read(input); err != nil {
|
||||
return
|
||||
}
|
||||
if n == 0 {
|
||||
err = errors.New("nothing passed on input")
|
||||
return
|
||||
}
|
||||
err = json.Unmarshal(input[0:n], &u)
|
||||
return
|
||||
}
|
||||
|
||||
func main() {
|
||||
towndb, err := towndb.ConnectDB()
|
||||
tdb, err := towndb.ConnectDB()
|
||||
if err != nil {
|
||||
fmt.Fprintln(os.Stderr, err)
|
||||
os.Exit(1)
|
||||
}
|
||||
if err = _main(towndb); err != nil {
|
||||
|
||||
userData, err := parseInput(os.Stdin)
|
||||
if err != nil {
|
||||
fmt.Fprintln(os.Stderr, err)
|
||||
os.Exit(2)
|
||||
}
|
||||
|
||||
if err = _main(tdb, userData); err != nil {
|
||||
fmt.Fprintln(os.Stderr, err)
|
||||
os.Exit(3)
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue