From 6a2267485dadb259bb5a4cf8f60566d3763659ca Mon Sep 17 00:00:00 2001 From: Odonax Date: Wed, 29 Apr 2026 21:37:13 +0200 Subject: [PATCH] Added database files --- .main.go.kate-swp | Bin 0 -> 325 bytes database/.database.go.kate-swp | Bin 0 -> 764 bytes database/database.go | 86 +++++++++++++++++++++++++++++++++ go.mod | 2 + go.sum | 2 + 5 files changed, 90 insertions(+) create mode 100644 .main.go.kate-swp create mode 100644 database/.database.go.kate-swp create mode 100644 database/database.go create mode 100644 go.sum diff --git a/.main.go.kate-swp b/.main.go.kate-swp new file mode 100644 index 0000000000000000000000000000000000000000..a007a452c05a3573fd366cd7cabfd0c4d2419ada GIT binary patch literal 325 zcmZQzU=Z?7EJ;-eE>A2_aLdd|RWQ;sU|?VnQN6ru%bP{UYoza9zH5BmVX@GsJCVWR zKp9pb=Jo^Ufq4j7Fh3u`X9md^yMm1cnZ^pz$PUCH05TS2 zABfKglHdSh5P;bS;v?(>@sRC<^9>>Pf%stiED?MbkO@WzKFDi~dI&zqO^itT!A>zl K$b(&A;R*m=$0Fqb literal 0 HcmV?d00001 diff --git a/database/.database.go.kate-swp b/database/.database.go.kate-swp new file mode 100644 index 0000000000000000000000000000000000000000..6cf874823618a2e915265b8a64e29937b3414c53 GIT binary patch literal 764 zcmZ9~&q@MO6oBz-%ZLJLBlKrd%F2pp-zJzuT-mHziIC}qK>`O__X0%^P_Gd52yI)q z>Lr5Sq4UX{JBPbCFu$4O{T$IbSMQICagsfb9+GRHkCThDbLZS<>vR2g`ttqt@$`EC zJb3?kyIuTcH}a$*vnA8&8PxJLQ*X=tny<- literal 0 HcmV?d00001 diff --git a/database/database.go b/database/database.go new file mode 100644 index 0000000..23b20ee --- /dev/null +++ b/database/database.go @@ -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") +} diff --git a/go.mod b/go.mod index cf825ad..52ce2c0 100644 --- a/go.mod +++ b/go.mod @@ -1,3 +1,5 @@ module 192.168.1.180/odonax/filehost-home go 1.26.2 + +require github.com/mattn/go-sqlite3 v1.14.44 // indirect diff --git a/go.sum b/go.sum new file mode 100644 index 0000000..cf1e561 --- /dev/null +++ b/go.sum @@ -0,0 +1,2 @@ +github.com/mattn/go-sqlite3 v1.14.44 h1:3VSe+xafpbzsLbdr2AWlAZk9yRHiBhTBakioXaCKTF8= +github.com/mattn/go-sqlite3 v1.14.44/go.mod h1:pjEuOr8IwzLJP2MfGeTb0A35jauH+C2kbHKBr7yXKVQ=