Reworking the get/create setup for Users. Seeeeems to be working.
This commit is contained in:
parent
edbdfe3afc
commit
5874be563d
2 changed files with 63 additions and 34 deletions
97
main.go
97
main.go
|
|
@ -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
BIN
rpgqui.db
Binary file not shown.
Loading…
Add table
Add a link
Reference in a new issue