CREATE TABLE IF NOT EXISTS farm_depreciation_snapshots ( id BIGSERIAL PRIMARY KEY, project_flock_id BIGINT NOT NULL REFERENCES project_flocks(id) ON UPDATE CASCADE ON DELETE CASCADE, period_date DATE NOT NULL, depreciation_percent_effective NUMERIC(15, 6) NOT NULL DEFAULT 0, depreciation_value NUMERIC(18, 3) NOT NULL DEFAULT 0, pullet_cost_day_n_total NUMERIC(18, 3) NOT NULL DEFAULT 0, components JSONB NOT NULL DEFAULT '{}'::jsonb, created_at TIMESTAMPTZ NOT NULL DEFAULT NOW(), updated_at TIMESTAMPTZ NOT NULL DEFAULT NOW(), CONSTRAINT farm_depreciation_snapshots_unique UNIQUE (project_flock_id, period_date) ); CREATE INDEX IF NOT EXISTS idx_farm_depreciation_snapshots_period_date ON farm_depreciation_snapshots (period_date); CREATE INDEX IF NOT EXISTS idx_farm_depreciation_snapshots_project_flock_id ON farm_depreciation_snapshots (project_flock_id);