Added database files

This commit is contained in:
2026-04-29 21:37:13 +02:00
parent 958dade451
commit 6a2267485d
5 changed files with 90 additions and 0 deletions
+86
View File
@@ -0,0 +1,86 @@
package database
import (
"database/sql"
"log"
_ "github.com/mattn/go-sqlite3"
)
func Open(path string) *sql.DB {
db, err := sql.Open("sqlite3", path)
if err != nil {
log.Fatal("failed to open database:", err)
}
if err := db.Ping(); err != nil {
log.Fatal("Failed to connect to database:", err)
}
createTables(db)
return db
}
func createTables(db *sql.DB) {
query := `
CREATE TABLE IF NOT EXISTS project (
id INTEGER PRIMARY KEY AUTOINCREMENT,
name TEXT NOT NULL,
slug TEXT NOT NULL UNIQUE,
description TEXT,
repo_url TEXT,
created_at DATETIME DEFAULT CURRENT_TIMESTAMP,
show_timestamps INTEGER DEFAULT 1
);
CREATE TABLE IF NOT EXISTS release (
id INTEGER PRIMARY KEY AUTOINCREMENT,
project_id INTEGER NOT NULL,
version TEXT NOT NULL,
title TEXT,
changelog TEXT,
is_latest INTEGER DEFAULT 0,
published_at DATETIME DEFAULT CURRENT_TIMESTAMP,
FOREIGN KEY (project_id) REFERENCES project(id)
);
CREATE TABLE IF NOT EXISTS asset (
id INTEGER PRIMARY KEY AUTOINCREMENT,
release_id INTEGER NOT NULL,
filename TEXT NOT NULL,
filepath TEXT NOT NULL,
os TEXT,
arch TEXT,
size INTEGER,
sha256 TEXT,
alt_url TEXT,
FOREIGN KEY (release_id) REFERENCES release(id)
);
CREATE TABLE IF NOT EXISTS page (
id INTEGER PRIMARY KEY AUTOINCREMENT,
project_id INTEGER NOT NULL,
slug TEXT NOT NULL,
title TEXT NOT NULL,
body TEXT,
sort_order INTEGER DEFAULT 0,
FOREIGN KEY (project_id) REFERENCES project(id)
);
CREATE TABLE IF NOT EXISTS screenshot (
id INTEGER PRIMARY KEY AUTOINCREMENT,
project_id INTEGER NOT NULL,
filename TEXT NOT NULL,
caption TEXT,
sort_order INTEGER DEFAULT 0,
FOREIGN KEY (project_id) REFERENCES project(id)
);
`
_, err := db.Exec(query)
if err != nil {
log.Fatal("Failed to create tables:", err)
}
log.Println("Database tables ready")
}