-- +goose Up

-- Owner-toggleable business modules — separate from core's `modules` table
-- (registered external services with health checks/restart). This is an
-- internal on/off switch: when a key is disabled, its nav entries and
-- routes disappear for every staff role, same idea as a feature flag. Only
-- a fixed, known set of keys exists (enforced in code, not a CHECK
-- constraint, so adding a new toggleable module later is a Go-side change
-- plus a migration INSERT, not a constraint rewrite). "service" (orders/
-- kanban/warehouse/cash) is deliberately not one of these rows — it's the
-- one thing that's always on, so there's always a usable fallback to
-- redirect a staff member to if their current section gets disabled.
CREATE TABLE feature_modules (
    key                   TEXT PRIMARY KEY,
    enabled               BOOLEAN NOT NULL DEFAULT TRUE,
    updated_at            TIMESTAMPTZ NOT NULL DEFAULT NOW(),
    updated_by_staff_name TEXT
);

-- Seeded enabled=true (the default column value already covers this, but
-- explicit here) — existing installs keep every module visible exactly as
-- before this migration; nothing disappears until an owner turns it off.
INSERT INTO feature_modules (key) VALUES ('online_shop'), ('catalogs'), ('cartridges');
