Reworking the get/create setup for Users. Seeeeems to be working.

This commit is contained in:
Alex Stevenson 2025-07-30 22:34:10 -04:00
parent edbdfe3afc
commit 5874be563d
2 changed files with 63 additions and 34 deletions

97
main.go
View file

@ -9,42 +9,55 @@ import (
_ "github.com/mattn/go-sqlite3"
)
type active_record interface {
init(string, int) bool
create() bool
read() bool
update() bool
delete() bool
type User struct {
id int64
name string
}
type ActiveSqliteRow struct {
id int
table_name string
columns []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 int
user_id int
id int64
user_id int64
name string
spawn_line string
}
type User struct {
id int
name string
}
func prep_query(db *sql.DB, q string) (*sql.Stmt){
statement, err := db.Prepare(q)
if err != nil {
log.Println(err)
log.Println(statement)
}
return statement
}
func check(e error) {
if e != nil {
@ -52,22 +65,38 @@ func check(e error) {
}
}
func prep_query(db *sql.DB, q string) (*sql.Stmt){
statement, err := db.Prepare(q)
check(err)
return statement
}
func reset_database(db *sql.DB) {
dat, _ := os.ReadFile("setup.sql")
dat, _ := os.ReadFile("setup.sql")
queries := strings.Split(string(dat), ";")
for i, q := range queries {
log.Println(i)
res, err := db.Exec(q)
for _, q := range queries {
_, err := db.Exec(q)
check(err)
log.Println(res)
}
}
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)
}

BIN
rpgqui.db

Binary file not shown.