70 lines
1.5 KiB
Go
70 lines
1.5 KiB
Go
package sqlite
|
|
|
|
import (
|
|
"database/sql"
|
|
"log"
|
|
)
|
|
|
|
func InitTables() {
|
|
// Create tables
|
|
q := `
|
|
CREATE TABLE IF NOT EXISTS albums (
|
|
id TEXT NOT NULL PRIMARY KEY,
|
|
name TEXT,
|
|
is_active INTEGER DEFAULT 1,
|
|
watermarked INTEGER DEFAULT 0,
|
|
created_at DATETIME DEFAULT CURRENT_TIMESTAMP,
|
|
expire_at DATETIME,
|
|
password TEXT,
|
|
allow_comments INTEGER DEFAULT 0,
|
|
allow_downloads INTEGER DEFAULT 0,
|
|
allow_favourite INTEGER DEFAULT 0
|
|
);
|
|
CREATE TABLE IF NOT EXISTS metrics (
|
|
album_id TEXT NOT NULL PRIMARY KEY,
|
|
views INTEGER DEFAULT 0,
|
|
downloads INTEGER DEFAULT 0,
|
|
files INTEGER DEFAULT 0,
|
|
files_size INTEGER DEFAULT 0,
|
|
fav_lists INTEGER DEFAULT 0
|
|
);
|
|
CREATE TABLE IF NOT EXISTS comments (
|
|
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
album_id TEXT,
|
|
photo_id TEXT,
|
|
message TEXT,
|
|
created_at DATETIME
|
|
);
|
|
CREATE TABLE IF NOT EXISTS users (
|
|
id INTEGER PRIMARY KEY,
|
|
username TEXT,
|
|
password TEXT
|
|
);
|
|
CREATE TABLE IF NOT EXISTS sessions (
|
|
id VARCHAR(36) PRIMARY KEY,
|
|
user_id INTEGER,
|
|
token TEXT,
|
|
expires_at DATETIME
|
|
);
|
|
`
|
|
_, err := db.Exec(q)
|
|
if err != nil {
|
|
log.Fatalf("%q: %s\n", err, q)
|
|
}
|
|
|
|
// Insert default user if not exists
|
|
q = `SELECT * FROM users WHERE username = 'admin'`
|
|
row := db.QueryRow(q)
|
|
var id int
|
|
err = row.Scan(&id)
|
|
if err != sql.ErrNoRows {
|
|
return
|
|
}
|
|
|
|
q = `INSERT INTO users (username, password) VALUES ('admin', '$2a$14$09LaSuG93OEdVXZMBP.8Ruy4rvP54OeEGBoNP/6DAHMR/K0ITNBYq')`
|
|
_, err = db.Exec(q)
|
|
if err != nil {
|
|
log.Fatalf("%q: %s\n", err, q)
|
|
}
|
|
}
|