Implement stinky creation and gettage
This commit is contained in:
58
main.go
58
main.go
@@ -12,6 +12,7 @@ import (
|
||||
|
||||
var Error *log.Logger
|
||||
var Warning *log.Logger
|
||||
|
||||
func init() {
|
||||
log.SetFlags(log.Lmicroseconds | log.Lshortfile)
|
||||
logFile, err := os.Create("main.log")
|
||||
@@ -31,6 +32,7 @@ func init() {
|
||||
}
|
||||
|
||||
var db DB
|
||||
|
||||
func main() {
|
||||
inputFile := flag.String("if", "input", "Input file")
|
||||
flag.Parse()
|
||||
@@ -56,7 +58,7 @@ func main() {
|
||||
Error.Printf("Failed parsing note: %v", err)
|
||||
return
|
||||
}
|
||||
|
||||
|
||||
err = SaveNote(note)
|
||||
if err != nil {
|
||||
Error.Printf("Failed saving note: %v", err)
|
||||
@@ -94,16 +96,21 @@ func ParseNote(data string) (NoteData, error) {
|
||||
}
|
||||
|
||||
func SaveNote(data NoteData) error {
|
||||
log.Printf("%#v", data)
|
||||
guild, err := GetGuildByName(data.Guild)
|
||||
guild, err := GetOrCreateGuildByName(data.Guild)
|
||||
if err != nil {
|
||||
return err
|
||||
return fmt.Errorf("failed getting guild for %s: %v", data.Guild, err)
|
||||
}
|
||||
log.Printf("%#v", guild)
|
||||
|
||||
stinky, err := GetOrCreateStinkyByName(data.Player, guild)
|
||||
if err != nil {
|
||||
return fmt.Errorf("failed getting stinky for %s: %v", data.Player, err)
|
||||
}
|
||||
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
func GetGuildByName(name string) (Guild, error) {
|
||||
func GetOrCreateGuildByName(name string) (Guild, error) {
|
||||
var guild Guild
|
||||
err := db.readConn.QueryRow("select id, name from guild where name = ?", name).Scan(&guild.ID, &guild.Name)
|
||||
if err != nil {
|
||||
@@ -137,4 +144,41 @@ func GetGuildById(id int) (Guild, error) {
|
||||
log.Printf("Guild not found: %v", err)
|
||||
}
|
||||
return guild, nil
|
||||
}
|
||||
}
|
||||
|
||||
func GetOrCreateStinkyByName(name string, guild Guild) (Stinky, error) {
|
||||
var stinky Stinky
|
||||
err := db.readConn.QueryRow("select id, name, guild from stinky where name = ?", name).Scan(&stinky.ID, &stinky.Name, &stinky.Guild.ID)
|
||||
if err != nil {
|
||||
log.Printf("Stinky not found: %v", err)
|
||||
stinky, err = CreateStinky(name, Guild{})
|
||||
if err != nil {
|
||||
return stinky, fmt.Errorf("failed creating stinky: %v", err)
|
||||
}
|
||||
}
|
||||
return stinky, nil
|
||||
}
|
||||
|
||||
func CreateStinky(name string, guild Guild) (Stinky, error) {
|
||||
stinky := Stinky{}
|
||||
res, err := db.writeConn.Exec("insert into stinky (name, guild) values (?, ?)", name, guild.ID)
|
||||
if err != nil {
|
||||
return stinky, fmt.Errorf("failed to insert stinky: %v", err)
|
||||
}
|
||||
|
||||
id, err := res.LastInsertId()
|
||||
if err != nil {
|
||||
return stinky, fmt.Errorf("failed getting last insert id for %d: %v", id, err)
|
||||
}
|
||||
|
||||
return GetStinkyById(int(id))
|
||||
}
|
||||
|
||||
func GetStinkyById(id int) (Stinky, error) {
|
||||
stinky := Stinky{}
|
||||
err := db.readConn.QueryRow("select id, name, guild from stinky where id = ?", id).Scan(&stinky.ID, &stinky.Name, &stinky.Guild.ID)
|
||||
if err != nil {
|
||||
return stinky, fmt.Errorf("failed getting stinky for %d: %v", id, err)
|
||||
}
|
||||
return stinky, nil
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user