Added code to load database

main
noah metz 2025-06-28 16:59:27 -07:00
parent c60fc1b739
commit b366e0e1bc
3 changed files with 87 additions and 0 deletions

@ -0,0 +1,5 @@
module git.metznet.ca/MetzNet/stampede_2025
go 1.24.4
require github.com/mattn/go-sqlite3 v1.14.28

@ -0,0 +1,2 @@
github.com/mattn/go-sqlite3 v1.14.28 h1:ThEiQrnbtumT+QMknw63Befp/ce/nUPgBPMlRFEum7A=
github.com/mattn/go-sqlite3 v1.14.28/go.mod h1:Uh1q+B4BYcTPb+yiD3kU8Ct7aC0hY9fxUwlHK0RXw+Y=

@ -0,0 +1,80 @@
package main
import (
"errors"
"os/signal"
"syscall"
"context"
"os"
"log/slog"
"database/sql"
_ "github.com/mattn/go-sqlite3"
)
const SQLITE_TABLES string = ``
func server(db_path string) error {
sigs := make(chan os.Signal, 1)
signal.Notify(sigs, syscall.SIGINT, syscall.SIGTERM)
ctx := context.Background()
seed_db := false
_, err := os.Stat(db_path)
if errors.Is(err, os.ErrNotExist) {
seed_db = true
} else if err != nil {
slog.Error("Failed to stat db file", "path", db_path, "error", err)
return err
}
db, err := sql.Open("sqlite3", db_path)
if err != nil {
slog.Error("Failed to open db file", "path", db_path, "error", err)
return err
}
if seed_db {
slog.Info("Seeding database", "path", db_path)
tx, err := db.BeginTx(ctx, nil)
if err != nil {
slog.Error("Failed to start tx for db init", "error", err)
return err
}
_, err = tx.Exec(SQLITE_TABLES)
if err != nil {
slog.Error("Failed to exec tables for db init", "error", err)
return err
}
err = tx.Commit()
if err != nil {
slog.Error("Failed to commit tx for db init", "error", err)
return err
}
}
slog.Info("Starting server", "path", db_path)
run := true
for run {
select {
case <-sigs:
run = false
}
}
err = db.Close()
if err != nil {
slog.Error("Failed to close db", "path", db_path, "error", err)
}
return nil
}
func main() {
err := server(os.Args[1])
if err != nil {
panic(err)
}
}