-- Eggtracker schema -- This file runs automatically on first container startup only. -- To re-run it, remove the mysql_data volume: docker compose down -v CREATE DATABASE IF NOT EXISTS eggtracker CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; USE eggtracker; -- ── Egg collections ─────────────────────────────────────────────────────────── CREATE TABLE IF NOT EXISTS egg_collections ( id INT UNSIGNED NOT NULL AUTO_INCREMENT, date DATE NOT NULL, eggs INT UNSIGNED NOT NULL, notes TEXT, created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP, PRIMARY KEY (id), UNIQUE KEY uq_date (date) ) ENGINE=InnoDB; -- ── Flock history ───────────────────────────────────────────────────────────── -- Each row records a change in flock size. The count in effect for any given -- date is the most recent row with date <= that date. CREATE TABLE IF NOT EXISTS flock_history ( id INT UNSIGNED NOT NULL AUTO_INCREMENT, date DATE NOT NULL, chicken_count INT UNSIGNED NOT NULL, notes TEXT, created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP, PRIMARY KEY (id), INDEX idx_date (date) ) ENGINE=InnoDB; -- ── Feed purchases ──────────────────────────────────────────────────────────── CREATE TABLE IF NOT EXISTS feed_purchases ( id INT UNSIGNED NOT NULL AUTO_INCREMENT, date DATE NOT NULL, bags DECIMAL(5, 2) NOT NULL, -- decimal for partial bags price_per_bag DECIMAL(10, 2) NOT NULL, notes TEXT, created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP, PRIMARY KEY (id), INDEX idx_date (date) ) ENGINE=InnoDB; -- ── Other purchases ─────────────────────────────────────────────────────────── -- Catch-all for non-feed costs: bedding, snacks, shelter, etc. CREATE TABLE IF NOT EXISTS other_purchases ( id INT UNSIGNED NOT NULL AUTO_INCREMENT, date DATE NOT NULL, total DECIMAL(10, 2) NOT NULL, notes TEXT, created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP, PRIMARY KEY (id), INDEX idx_date (date) ) ENGINE=InnoDB;