From 21b43baf825d2835328a8300a9d1bd41e4cd3d5b Mon Sep 17 00:00:00 2001 From: Alex Stevenson Date: Mon, 25 Aug 2025 18:44:57 -0400 Subject: [PATCH] More shuffling. Can talk to DB now again but it's not returning record structs correctly. --- cmd/main/main.go | 126 +++++------------------------------- internal/storage/records.go | 117 +++++++++++++++++++-------------- rpgqui.db | Bin 16384 -> 16384 bytes 3 files changed, 82 insertions(+), 161 deletions(-) diff --git a/cmd/main/main.go b/cmd/main/main.go index 6b4a6c7..b0c8430 100644 --- a/cmd/main/main.go +++ b/cmd/main/main.go @@ -11,119 +11,20 @@ import ( _ "github.com/mattn/go-sqlite3" ) -// Panic and crash if an error shows up, and print the error -func check(e error) { - if e != nil { - panic(e) - } -} - -// Convert a query into an executable statement. -func prep_query(db *sql.DB, q string) (*sql.Stmt){ - statement, err := db.Prepare(q) - check(err) - return statement -} - -// User record management stuff. Eventually want to abstract -// this out to store any sort of record... -type User struct { - id int64 - name string -} - -func create_user(db *sql.DB, name string) (User) { - s := prep_query(db, "INSERT INTO users (name) VALUES (?)") - res, err := s.Exec(name) - check(err) - - var u User - - id, _ := res.LastInsertId() - u.id = id - u.name = name - - return u -} - -func get_user(db *sql.DB, name string) (User) { - s := prep_query(db, "SELECT * FROM users WHERE name = ? LIMIT 1") - res, err := s.Query(name) - - check(err) - - var u User - - res.Next() - res.Scan(&u.id, &u.name) - res.Close() - - if u.id == 0 { - return create_user(db, name) - } else { - return u - } -} - -// Blerk. Start here with a get/create and see where -// that goes... -type Entity struct { - id int64 - user_id int64 - name string - spawn_line string -} - -func create_entity(db *sql.DB, user_id int64, name string, spawn_line string) (Entity) { - s := prep_query(db, "INSERT INTO entities (user_id, name, spawn_line) VALUES (?, ?, ?)") - res, err := s.Exec(user_id, name, spawn_line) - check(err) - - var ent Entity - - id, _ := res.LastInsertId() - ent.id = id - ent.user_id = user_id - ent.name = name - ent.spawn_line = spawn_line - - return ent -} - -func get_entity(db *sql.DB, id int64) (Entity) { - s := prep_query(db, "SELECT * FROM entities WHERE id = ? LIMIT 1") - res, err := s.Query(id) - - check(err) - - var ent Entity - - res.Next() - err = res.Scan(&ent.id, &ent.user_id, &ent.name, &ent.spawn_line) - check(err) - - res.Close() - - - if ent.id == 0 { - log.Printf("Entity id %d doesn't exist!", id) - } - - return ent -} - func reset_database(db *sql.DB) { dat, _ := os.ReadFile("setup.sql") queries := strings.Split(string(dat), ";") for _, q := range queries { _, err := db.Exec(q) - check(err) + records.Check(err) } } func main() { - db, _ := sql.Open("sqlite3", "rpgqui.db") + db, err := sql.Open("sqlite3", "rpgqui.db") + + records.Check(err) reset_database(db) @@ -131,23 +32,26 @@ func main() { log.Println("Adding users...\n") // spin up a user... - u := get_user(db, "Monqui") + u := records.GetUser(db, "Monqui") +log.Printf("Type: %T", u) +log.Println(u) +//log.Printf("ID: %d, name: %s", u.id, u.name) +/* u = records.GetUser(db, "Jim") log.Printf("ID: %d, name: %s", u.id, u.name) - u = get_user(db, "Jim") -log.Printf("ID: %d, name: %s", u.id, u.name) - u = get_user(db, "Monqui") + u = records.GetUser(db, "Monqui") log.Printf("ID: %d, name: %s", u.id, u.name) // make some entities... log.Println("Adding entities...\n") - e := create_entity(db, u.id, "idk a demon", "hello im monqui") + e := records.CreateEntity(db, u.id, "idk a demon", "hello im monqui") log.Printf("ID: %d, user_id: %d, spawn_line: %s", e.id, e.user_id, e.spawn_line) - e = create_entity(db, u.id, "idk a monster", "here's a whole nother line!") + e = records.CreateEntity(db, u.id, "idk a monster", "here's a whole nother line!") log.Printf("ID: %d, user_id: %d, spawn_line: %s", e.id, e.user_id, e.spawn_line) log.Println("Trying to fetch some entities...\n") - e = get_entity(db, 1) + e = records.GetEntity(db, 1) log.Printf("ID: %d, user_id: %d, spawn_line: %s", e.id, e.user_id, e.spawn_line) - e = get_entity(db, 2) + e = records.GetEntity(db, 2) log.Printf("ID: %d, user_id: %d, spawn_line: %s", e.id, e.user_id, e.spawn_line) +*/ } diff --git a/internal/storage/records.go b/internal/storage/records.go index c0a34c0..ab2558d 100644 --- a/internal/storage/records.go +++ b/internal/storage/records.go @@ -1,89 +1,106 @@ package records +import ( + "log" + "database/sql" +) + +// Panic and crash if an error shows up, and print the error +func Check(e error) { + if e != nil { + panic(e) + } +} + +// Convert a query into an executable statement. +func prep_query(db *sql.DB, q string) (*sql.Stmt){ + statement, err := db.Prepare(q) + Check(err) + return statement +} + // User record management stuff. Eventually want to abstract // this out to store any sort of record... type User struct { - id int64 - name string + id int64 + name string } func CreateUser(db *sql.DB, name string) (User) { - s := prep_query(db, "INSERT INTO users (name) VALUES (?)") - res, err := s.Exec(name) - check(err) + s := prep_query(db, "INSERT INTO users (name) VALUES (?)") + res, err := s.Exec(name) + Check(err) - var u User + var u User - id, _ := res.LastInsertId() - u.id = id - u.name = name + id, _ := res.LastInsertId() + u.id = id + u.name = name - return u + return u } func GetUser(db *sql.DB, name string) (User) { - s := prep_query(db, "SELECT * FROM users WHERE name = ? LIMIT 1") - res, err := s.Query(name) + s := prep_query(db, "SELECT * FROM users WHERE name = ? LIMIT 1") + res, err := s.Query(name) - check(err) + Check(err) - var u User + var u User - res.Next() - res.Scan(&u.id, &u.name) - res.Close() + res.Next() + res.Scan(&u.id, &u.name) + res.Close() - if u.id == 0 { - return create_user(db, name) - } else { - return u - } + if u.id == 0 { + return CreateUser(db, name) + } else { + return u + } } // Blerk. Start here with a get/create and see where // that goes... type Entity struct { - id int64 - user_id int64 - name string - spawn_line string + id int64 + user_id int64 + name string + spawn_line string } func CreateEntity(db *sql.DB, user_id int64, name string, spawn_line string) (Entity) { - s := prep_query(db, "INSERT INTO entities (user_id, name, spawn_line) VALUES (?, ?, ?)") - res, err := s.Exec(user_id, name, spawn_line) - check(err) + s := prep_query(db, "INSERT INTO entities (user_id, name, spawn_line) VALUES (?, ?, ?)") + res, err := s.Exec(user_id, name, spawn_line) + Check(err) - var ent Entity + var ent Entity - id, _ := res.LastInsertId() - ent.id = id - ent.user_id = user_id - ent.name = name - ent.spawn_line = spawn_line + id, _ := res.LastInsertId() + ent.id = id + ent.user_id = user_id + ent.name = name + ent.spawn_line = spawn_line - return ent + return ent } func GetEntity(db *sql.DB, id int64) (Entity) { - s := prep_query(db, "SELECT * FROM entities WHERE id = ? LIMIT 1") - res, err := s.Query(id) + s := prep_query(db, "SELECT * FROM entities WHERE id = ? LIMIT 1") + res, err := s.Query(id) - check(err) + Check(err) - var ent Entity + var ent Entity - res.Next() - err = res.Scan(&ent.id, &ent.user_id, &ent.name, &ent.spawn_line) - check(err) + res.Next() + err = res.Scan(&ent.id, &ent.user_id, &ent.name, &ent.spawn_line) + Check(err) - res.Close() + res.Close() + if ent.id == 0 { + log.Printf("Entity id %d doesn't exist!", id) + } - if ent.id == 0 { - log.Printf("Entity id %d doesn't exist!", id) - } - - return ent + return ent } - diff --git a/rpgqui.db b/rpgqui.db index ea2014e9fc84fd99ab0ece2e84f669865c176e8d..e0bf27487c22ec75a7ad9bf7f23706b76d24d9e3 100644 GIT binary patch delta 128 zcmZo@U~Fh$oFFB{AjiPKzyicDAT?3Ph>1aNW5N=CHb(xh4E$d=3o6{@pBTU=%E`#g wAnBW*S6G_K1ys(+|BZqF8$@;jzZ564Bqv0Y7i5+I*g$3=$qY4slMA5)0DRXPv;Y7A delta 209 zcmZo@U~Fh$oFFB{_?Cfzfdz=6fKh3pju8{%+l>iJ_&J#P-!kxj<$t?bP~aiIJR1`; zgRoa-E+->1gQRbMUSVk_7f=@y|2qc$cl_UgiXQPRu`>%Z0@W~aGD~to)bN7UY+&HO z&%Xi4WCp5Rz#pK?#LB>_?wpyDt&pgYo1a%)l3J9JT9m3@4CI$*08K46u>b%7