More shuffling. Can talk to DB now again but it's not returning record structs correctly.

This commit is contained in:
Alex Stevenson 2025-08-25 18:44:57 -04:00
parent 8968271c3b
commit 21b43baf82
3 changed files with 82 additions and 161 deletions

View file

@ -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
}