Setup database and Data directory
This commit is contained in:
@@ -2,22 +2,48 @@ package main
|
||||
|
||||
import (
|
||||
"database/sql"
|
||||
"fmt"
|
||||
"log"
|
||||
"log/slog"
|
||||
"os"
|
||||
"path/filepath"
|
||||
"strings"
|
||||
|
||||
_ "modernc.org/sqlite"
|
||||
)
|
||||
|
||||
// Create new sqlite database
|
||||
// If filepath parameter is empty
|
||||
func NewDatabaseConnection(dataDir string, dbName string) (*sql.DB, error) {
|
||||
var dbFilePath string
|
||||
|
||||
if dbName == "" {
|
||||
dbFilePath = filepath.Join(dataDir, "app.db")
|
||||
} else {
|
||||
dbFilePath = filepath.Join(dataDir, filepath.Base(dbName))
|
||||
}
|
||||
|
||||
db, err := sql.Open("sqlite", dbFilePath)
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("database open error: %w", err)
|
||||
}
|
||||
|
||||
if err := db.Ping(); err != nil {
|
||||
return nil, fmt.Errorf("database connection error: %w", err)
|
||||
}
|
||||
|
||||
return db, nil
|
||||
}
|
||||
|
||||
// database
|
||||
//
|
||||
// Manage database connection to ./app.db
|
||||
// Handles CRUD
|
||||
func database() *sql.DB {
|
||||
db, err := sql.Open("sqlite", "./app.db")
|
||||
if err != nil {
|
||||
log.Fatal(err)
|
||||
func database(db *sql.DB) *sql.DB {
|
||||
if db == nil {
|
||||
slog.Error("No connection to the database!")
|
||||
os.Exit(1)
|
||||
}
|
||||
|
||||
// Seed default menu items if empty
|
||||
row := db.QueryRow("SELECT COUNT(*) FROM menu_items")
|
||||
var count int
|
||||
@@ -65,7 +91,7 @@ func database() *sql.DB {
|
||||
}
|
||||
|
||||
// Create users table
|
||||
_, err = db.Exec(`
|
||||
_, err := db.Exec(`
|
||||
CREATE TABLE IF NOT EXISTS users (
|
||||
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
||||
username TEXT NOT NULL UNIQUE,
|
||||
|
||||
Reference in New Issue
Block a user