Added database files
This commit is contained in:
Binary file not shown.
@@ -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")
|
||||
}
|
||||
Reference in New Issue
Block a user