More shuffling. Can talk to DB now again but it's not returning record structs correctly.
This commit is contained in:
parent
8968271c3b
commit
21b43baf82
3 changed files with 82 additions and 161 deletions
126
cmd/main/main.go
126
cmd/main/main.go
|
|
@ -11,119 +11,20 @@ import (
|
||||||
_ "github.com/mattn/go-sqlite3"
|
_ "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) {
|
func reset_database(db *sql.DB) {
|
||||||
dat, _ := os.ReadFile("setup.sql")
|
dat, _ := os.ReadFile("setup.sql")
|
||||||
queries := strings.Split(string(dat), ";")
|
queries := strings.Split(string(dat), ";")
|
||||||
|
|
||||||
for _, q := range queries {
|
for _, q := range queries {
|
||||||
_, err := db.Exec(q)
|
_, err := db.Exec(q)
|
||||||
check(err)
|
records.Check(err)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func main() {
|
func main() {
|
||||||
db, _ := sql.Open("sqlite3", "rpgqui.db")
|
db, err := sql.Open("sqlite3", "rpgqui.db")
|
||||||
|
|
||||||
|
records.Check(err)
|
||||||
|
|
||||||
reset_database(db)
|
reset_database(db)
|
||||||
|
|
||||||
|
|
@ -131,23 +32,26 @@ func main() {
|
||||||
|
|
||||||
log.Println("Adding users...\n")
|
log.Println("Adding users...\n")
|
||||||
// spin up a user...
|
// 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)
|
log.Printf("ID: %d, name: %s", u.id, u.name)
|
||||||
u = get_user(db, "Jim")
|
u = records.GetUser(db, "Monqui")
|
||||||
log.Printf("ID: %d, name: %s", u.id, u.name)
|
|
||||||
u = get_user(db, "Monqui")
|
|
||||||
log.Printf("ID: %d, name: %s", u.id, u.name)
|
log.Printf("ID: %d, name: %s", u.id, u.name)
|
||||||
|
|
||||||
// make some entities...
|
// make some entities...
|
||||||
log.Println("Adding entities...\n")
|
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)
|
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.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")
|
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)
|
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)
|
log.Printf("ID: %d, user_id: %d, spawn_line: %s", e.id, e.user_id, e.spawn_line)
|
||||||
|
*/
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,89 +1,106 @@
|
||||||
package records
|
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
|
// User record management stuff. Eventually want to abstract
|
||||||
// this out to store any sort of record...
|
// this out to store any sort of record...
|
||||||
type User struct {
|
type User struct {
|
||||||
id int64
|
id int64
|
||||||
name string
|
name string
|
||||||
}
|
}
|
||||||
|
|
||||||
func CreateUser(db *sql.DB, name string) (User) {
|
func CreateUser(db *sql.DB, name string) (User) {
|
||||||
s := prep_query(db, "INSERT INTO users (name) VALUES (?)")
|
s := prep_query(db, "INSERT INTO users (name) VALUES (?)")
|
||||||
res, err := s.Exec(name)
|
res, err := s.Exec(name)
|
||||||
check(err)
|
Check(err)
|
||||||
|
|
||||||
var u User
|
var u User
|
||||||
|
|
||||||
id, _ := res.LastInsertId()
|
id, _ := res.LastInsertId()
|
||||||
u.id = id
|
u.id = id
|
||||||
u.name = name
|
u.name = name
|
||||||
|
|
||||||
return u
|
return u
|
||||||
}
|
}
|
||||||
|
|
||||||
func GetUser(db *sql.DB, name string) (User) {
|
func GetUser(db *sql.DB, name string) (User) {
|
||||||
s := prep_query(db, "SELECT * FROM users WHERE name = ? LIMIT 1")
|
s := prep_query(db, "SELECT * FROM users WHERE name = ? LIMIT 1")
|
||||||
res, err := s.Query(name)
|
res, err := s.Query(name)
|
||||||
|
|
||||||
check(err)
|
Check(err)
|
||||||
|
|
||||||
var u User
|
var u User
|
||||||
|
|
||||||
res.Next()
|
res.Next()
|
||||||
res.Scan(&u.id, &u.name)
|
res.Scan(&u.id, &u.name)
|
||||||
res.Close()
|
res.Close()
|
||||||
|
|
||||||
if u.id == 0 {
|
if u.id == 0 {
|
||||||
return create_user(db, name)
|
return CreateUser(db, name)
|
||||||
} else {
|
} else {
|
||||||
return u
|
return u
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Blerk. Start here with a get/create and see where
|
// Blerk. Start here with a get/create and see where
|
||||||
// that goes...
|
// that goes...
|
||||||
type Entity struct {
|
type Entity struct {
|
||||||
id int64
|
id int64
|
||||||
user_id int64
|
user_id int64
|
||||||
name string
|
name string
|
||||||
spawn_line string
|
spawn_line string
|
||||||
}
|
}
|
||||||
|
|
||||||
func CreateEntity(db *sql.DB, user_id int64, name string, spawn_line string) (Entity) {
|
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 (?, ?, ?)")
|
s := prep_query(db, "INSERT INTO entities (user_id, name, spawn_line) VALUES (?, ?, ?)")
|
||||||
res, err := s.Exec(user_id, name, spawn_line)
|
res, err := s.Exec(user_id, name, spawn_line)
|
||||||
check(err)
|
Check(err)
|
||||||
|
|
||||||
var ent Entity
|
var ent Entity
|
||||||
|
|
||||||
id, _ := res.LastInsertId()
|
id, _ := res.LastInsertId()
|
||||||
ent.id = id
|
ent.id = id
|
||||||
ent.user_id = user_id
|
ent.user_id = user_id
|
||||||
ent.name = name
|
ent.name = name
|
||||||
ent.spawn_line = spawn_line
|
ent.spawn_line = spawn_line
|
||||||
|
|
||||||
return ent
|
return ent
|
||||||
}
|
}
|
||||||
|
|
||||||
func GetEntity(db *sql.DB, id int64) (Entity) {
|
func GetEntity(db *sql.DB, id int64) (Entity) {
|
||||||
s := prep_query(db, "SELECT * FROM entities WHERE id = ? LIMIT 1")
|
s := prep_query(db, "SELECT * FROM entities WHERE id = ? LIMIT 1")
|
||||||
res, err := s.Query(id)
|
res, err := s.Query(id)
|
||||||
|
|
||||||
check(err)
|
Check(err)
|
||||||
|
|
||||||
var ent Entity
|
var ent Entity
|
||||||
|
|
||||||
res.Next()
|
res.Next()
|
||||||
err = res.Scan(&ent.id, &ent.user_id, &ent.name, &ent.spawn_line)
|
err = res.Scan(&ent.id, &ent.user_id, &ent.name, &ent.spawn_line)
|
||||||
check(err)
|
Check(err)
|
||||||
|
|
||||||
res.Close()
|
res.Close()
|
||||||
|
|
||||||
|
if ent.id == 0 {
|
||||||
|
log.Printf("Entity id %d doesn't exist!", id)
|
||||||
|
}
|
||||||
|
|
||||||
if ent.id == 0 {
|
return ent
|
||||||
log.Printf("Entity id %d doesn't exist!", id)
|
|
||||||
}
|
|
||||||
|
|
||||||
return ent
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
BIN
rpgqui.db
BIN
rpgqui.db
Binary file not shown.
Loading…
Add table
Add a link
Reference in a new issue