Track deploy/mysql/init.sql so fresh deployments initialize the database
The blanket *.sql ignore rule (meant for database dumps) also excluded deploy/mysql/init.sql, so it was never committed. On a fresh clone the compose bind mount resolves to a missing file, MySQL skips schema initialization, and every database-backed page throws.
This commit is contained in:
@@ -41,6 +41,7 @@ app/storage/latex/*
|
||||
|
||||
# Database dumps
|
||||
*.sql
|
||||
!deploy/mysql/init.sql
|
||||
backup/
|
||||
|
||||
# Temporary files
|
||||
|
||||
Executable
+90
@@ -0,0 +1,90 @@
|
||||
-- ProostenKrant Database Schema
|
||||
-- Dutch Family Newspaper System
|
||||
|
||||
CREATE DATABASE IF NOT EXISTS proostenkrant;
|
||||
USE proostenkrant;
|
||||
|
||||
-- Users table (family members)
|
||||
CREATE TABLE IF NOT EXISTS users (
|
||||
id INT AUTO_INCREMENT PRIMARY KEY,
|
||||
username VARCHAR(50) NOT NULL UNIQUE,
|
||||
display_name VARCHAR(100) NOT NULL,
|
||||
profile_image VARCHAR(255),
|
||||
is_active BOOLEAN DEFAULT TRUE,
|
||||
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
||||
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
|
||||
);
|
||||
|
||||
-- Seasons table
|
||||
CREATE TABLE IF NOT EXISTS seasons (
|
||||
id INT AUTO_INCREMENT PRIMARY KEY,
|
||||
name VARCHAR(50) NOT NULL,
|
||||
description TEXT,
|
||||
start_date DATE NOT NULL,
|
||||
end_date DATE NOT NULL,
|
||||
is_active BOOLEAN DEFAULT TRUE,
|
||||
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
|
||||
);
|
||||
|
||||
-- Articles table
|
||||
CREATE TABLE IF NOT EXISTS articles (
|
||||
id INT AUTO_INCREMENT PRIMARY KEY,
|
||||
title VARCHAR(255) NOT NULL,
|
||||
content TEXT NOT NULL,
|
||||
author_id INT NOT NULL,
|
||||
participants TEXT, -- Comma-separated list of user IDs
|
||||
event_date DATE NOT NULL,
|
||||
season_id INT,
|
||||
article_image VARCHAR(255),
|
||||
status ENUM('draft', 'published', 'archived') DEFAULT 'draft',
|
||||
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
||||
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
|
||||
FOREIGN KEY (author_id) REFERENCES users(id) ON DELETE CASCADE,
|
||||
FOREIGN KEY (season_id) REFERENCES seasons(id) ON DELETE SET NULL
|
||||
);
|
||||
|
||||
-- System settings table
|
||||
CREATE TABLE IF NOT EXISTS settings (
|
||||
id INT AUTO_INCREMENT PRIMARY KEY,
|
||||
key_name VARCHAR(100) NOT NULL UNIQUE,
|
||||
value TEXT,
|
||||
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
|
||||
);
|
||||
|
||||
-- Insert default seasons
|
||||
INSERT INTO seasons (name, description, start_date, end_date) VALUES
|
||||
('Lente', 'Lente editie - Voorjaar', '2026-03-20', '2026-06-20'),
|
||||
('Zomer', 'Zomer editie', '2026-06-21', '2026-09-22'),
|
||||
('Herfst', 'Herfst editie', '2026-09-23', '2026-12-20'),
|
||||
('Winter', 'Winter editie', '2026-12-21', '2026-03-19');
|
||||
|
||||
-- Insert default users (family members)
|
||||
INSERT INTO users (username, display_name, profile_image) VALUES
|
||||
('douwe', 'Douwe', NULL),
|
||||
('pauline', 'Pauline', NULL),
|
||||
('diede', 'Diede', NULL),
|
||||
('dien', 'Dien', NULL),
|
||||
('chris', 'Chris', NULL),
|
||||
('geert', 'Geert', NULL),
|
||||
('annick', 'Annick', NULL),
|
||||
('cedric', 'Cedric', NULL),
|
||||
('gunter', 'Gunter', NULL),
|
||||
('daan', 'Daan', NULL),
|
||||
('kyala', 'Kyala', NULL),
|
||||
('michel', 'Michel', NULL),
|
||||
('dries', 'Dries', NULL),
|
||||
('pieter', 'Pieter', NULL),
|
||||
('mathilde', 'Mathilde', NULL),
|
||||
('kevin', 'Kevin', NULL),
|
||||
('luc', 'Luc', NULL),
|
||||
('tilde', 'Tilde', NULL);
|
||||
|
||||
-- Insert universal password setting
|
||||
INSERT INTO settings (key_name, value) VALUES
|
||||
('universal_password', 'ProostenKrant2024!');
|
||||
|
||||
-- Create indexes for better performance
|
||||
CREATE INDEX idx_articles_author ON articles(author_id);
|
||||
CREATE INDEX idx_articles_season ON articles(season_id);
|
||||
CREATE INDEX idx_articles_date ON articles(event_date);
|
||||
CREATE INDEX idx_articles_status ON articles(status);
|
||||
Reference in New Issue
Block a user