summaryrefslogtreecommitdiff
path: root/main.go
diff options
context:
space:
mode:
authorxengineering <me@xengineering.eu>2026-06-05 20:59:27 +0200
committerxengineering <me@xengineering.eu>2026-06-05 21:01:52 +0200
commit3395bc1cd32698897385596022e0c855765b48f2 (patch)
treead36fb947f07a1d81f68e1919404128386128452 /main.go
parent3ad3565c64ed1ce692c0509d8fe5a7530f8fb7e3 (diff)
downloadfinserv-3395bc1cd32698897385596022e0c855765b48f2.tar
finserv-3395bc1cd32698897385596022e0c855765b48f2.tar.zst
finserv-3395bc1cd32698897385596022e0c855765b48f2.zip
Add global db variable and open connection to itHEADmain
This allows any handler to access the database via a global variable. The connection is closed when the run function finishes.
Diffstat (limited to 'main.go')
-rw-r--r--main.go18
1 files changed, 18 insertions, 0 deletions
diff --git a/main.go b/main.go
index e623ed6..0c84456 100644
--- a/main.go
+++ b/main.go
@@ -1,6 +1,7 @@
package main
import (
+ "database/sql"
_ "embed"
"log"
"net/http"
@@ -10,17 +11,20 @@ import (
"time"
"github.com/gorilla/mux"
+ _ "github.com/mattn/go-sqlite3"
)
const (
Addr = "127.0.0.1:8000"
ReadTimeout = 15 * time.Second
WriteTimeout = 15 * time.Second
+ DatabasePath = "/var/lib/finserv/main.sqlite3"
)
//go:embed VERSION.txt
var versionTxt string
var router *mux.Router = mux.NewRouter()
+var db *sql.DB
func init() {
log.SetFlags(0)
@@ -33,6 +37,7 @@ func main() {
WriteTimeout,
ReadTimeout,
[]syscall.Signal{syscall.SIGTERM, syscall.SIGINT},
+ DatabasePath,
)
}
@@ -42,10 +47,23 @@ func run(
wTimeout time.Duration,
rTimeout time.Duration,
signals []syscall.Signal,
+ dbPath string,
) {
log.Println("finserv finance server was started.")
defer log.Println("finserv finance server was stopped.")
+ var err error
+ db, err = sql.Open("sqlite3", dbPath)
+ if err != nil {
+ log.Fatalf("Failed to open SQLite3 database '%s': %v", dbPath, err)
+ }
+ defer db.Close()
+
+ err = MigrateToLatest(db)
+ if err != nil {
+ log.Fatalf("Failed to migrate SQLite3 database '%s': %v", dbPath, err)
+ }
+
server := &http.Server{
Handler: handler,
Addr: addr,