From 380153ec39d0a81649de34edef9bd181cb028813 Mon Sep 17 00:00:00 2001 From: Alex Stevenson Date: Thu, 31 Jul 2025 00:03:16 -0400 Subject: [PATCH] Initial Entity stuff commit... --- main.go | 66 +++++++++++++++++++++++++++++++++++++++++------------- rpgqui.db | Bin 12288 -> 16384 bytes setup.sql | 4 +++- 3 files changed, 54 insertions(+), 16 deletions(-) diff --git a/main.go b/main.go index 0de5b0a..f898e93 100644 --- a/main.go +++ b/main.go @@ -9,20 +9,22 @@ 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 @@ -31,13 +33,11 @@ type User struct { 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 @@ -68,10 +68,44 @@ func get_user(db *sql.DB, name string) (User) { type Entity struct { id int64 user_id int64 - name string spawn_line string } +func create_entity(db *sql.DB, user_id int64, spawn_line string) (Entity) { + s := prep_query(db, "INSERT INTO entities (user_id, spawn_line) VALUES (?, ?)") + res, err := s.Exec(user_id, spawn_line) + check(err) + + var ent Entity + + id, _ := res.LastInsertId() + ent.id = id + ent.user_id = user_id + 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 e Entity + + res.Next() + res.Scan(&e.id, &e.user_id, &e.spawn_line) + res.Close() + + if e.id != 0 { + return e + } else { + log.Printf("Entity id %d doesn't exist!", id) + panic("!") + } +} + func reset_database(db *sql.DB) { dat, _ := os.ReadFile("setup.sql") queries := strings.Split(string(dat), ";") @@ -82,19 +116,21 @@ func reset_database(db *sql.DB) { } } - func main() { db, _ := sql.Open("sqlite3", "rpgqui.db") reset_database(db) - var u User - u = get_user(db, "Monqui") -log.Printf("ID: %d, name: %s", u.id, u.name) - u = get_user(db, "dug") -log.Printf("ID: %d, name: %s", u.id, u.name) - u = get_user(db, "Gary") -log.Printf("ID: %d, name: %s", u.id, u.name) - u = get_user(db, "Jimbo") -log.Printf("ID: %d, name: %s", u.id, u.name) + log.Println("Reset db...") + +// spin up a user... + u := get_user(db, "Monqui") + +// make an entity for the user... + e := create_entity(db, u.id, "hello im monqui") +log.Printf("ID: %d, user_id: %d, spawn_line: %s", e.id, e.user_id, e.spawn_line) + +// this should fail... + e = create_entity(db, 2, "hello im monqui???") +log.Printf("ID: %d, user_id: %d, spawn_line: %s", e.id, e.user_id, e.spawn_line) } diff --git a/rpgqui.db b/rpgqui.db index 3295eefdf0d6c65230082b0abc09e5db9b35aae6..ad262f093a5e44a6dbfdbea1a559c3b772a81d1c 100644 GIT binary patch delta 288 zcmZojXlP)ZASJ|Tz`(%30>m(|ZK95m2vAh7O_P`Z2Lm(TGzR_*{s zvy02hGBy>KBqrsgrskDomSmfS2grfEK+MSh zm4W~3WospW8ldq7O atB?y;&ILB?8w3A0s6u5fPG(6?h*<#kpG_A4 delta 220 zcmZo@U~EX3ASJ}Gl7WGN8HiyZZK945NK~&)lNTt)#CL&#e-Yn>&4L06e9VphOp|Bw z$uKfa-p02{GKP^|TwI*7QM@EEDJQkGIJKx4OfXMwr#%*+g;?ukW}Y)s4y!YQTcoQ%v2lD_$Qg{7GwyIJ^eG4Oxoe+$>E HMx0&%%C|AQ diff --git a/setup.sql b/setup.sql index 0ae9a38..d8da35b 100644 --- a/setup.sql +++ b/setup.sql @@ -1,9 +1,11 @@ DROP TABLE IF EXISTS users; DROP TABLE IF EXISTS entities; +PRAGMA foreign_keys = ON; + CREATE TABLE IF NOT EXISTS users ( id INTEGER PRIMARY KEY, - name VARCHAR(64) + name VARCHAR(64) UNIQUE ); CREATE TABLE IF NOT EXISTS entities (