--- /dev/null
+CREATE TABLE admin (
+ admin_id INTEGER PRIMARY KEY,
+ id TEXT,
+ pw TEXT
+);
+CREATE TABLE story (
+ story_id INTEGER PRIMARY KEY,
+ id TEXT,
+ title TEXT,
+ date_marked TEXT
+ primary_media_id TEXT,
+ content TEXT
+);
+CREATE TABLE media (
+ media_id INTEGER PRIMARY KEY,
+ id TEXT,
+ kind TEXT,
+ content BLOB
+)
\ No newline at end of file
import (
"fmt"
+ pkgdb "our-wedding-rsvp/pkg/db"
+ pkgglob "our-wedding-rsvp/pkg/glob"
)
func test(tc int) error {
case 0:
+ reterr = test_db()
+
break
default:
return reterr
}
+
+func test_db() error {
+
+ err := pkgdb.OpenDB(pkgglob.G_CONF.Db.Addr, pkgglob.G_CONF.Db.InitFile)
+
+ if err != nil {
+ return err
+ }
+
+ return nil
+}
import (
"database/sql"
+ "fmt"
_ "github.com/mattn/go-sqlite3"
)
var _db *sql.DB
-func OpenDB(addr string) error {
+func OpenDB(addr string, initfile string) error {
db, err := sql.Open("sqlite3", addr)
_db = db
+ err = runInitSql(initfile)
+
+ if err != nil {
+
+ _db.Close()
+
+ return fmt.Errorf("failed to run init sql: %v", err)
+ }
+
+ return nil
+}
+
+func Query(query string, args []any) (*sql.Rows, error) {
+
+ var empty_row *sql.Rows
+
+ results, err := _db.Query(query, args[0:]...)
+
+ if err != nil {
+
+ return empty_row, fmt.Errorf("db query: %s", err.Error())
+
+ }
+
+ return results, err
+
+}
+
+func Exec(query string, args []any) error {
+
+ result, err := _db.Exec(query, args[0:]...)
+
+ if err != nil {
+ return fmt.Errorf("db exec: %s", err.Error())
+ }
+
+ _, err = result.RowsAffected()
+
+ if err != nil {
+
+ return fmt.Errorf("db exec: rows: %s", err.Error())
+ }
+
return nil
+
+}
+
+func runInitSql(initfile string) error {
+
+ return nil
+
}
type Config struct {
Test int `yaml:"test"`
ServeAddr string `yaml:"serveAddr"`
- DbAddr string `yaml:"dbAddr"`
- Admin struct {
+ Db struct {
+ Addr string `yaml:"addr"`
+ InitFile string `yaml:"initFile"`
+ } `yaml:"db"`
+ Admin struct {
UseOauth2 bool `yaml:"useOauth2"`
Id string `yaml:"id"`
Pw string `yaml:"pw"`