All checks were successful
Deploy yourpart (blue-green) / deploy (push) Successful in 2m55s
44 lines
2.2 KiB
SQL
44 lines
2.2 KiB
SQL
-- Daemon: Amtsvorteile (reputation_periodic Ticks, optional Ernennungs-Ablauf)
|
||
-- Voraussetzung: Backend-Seeds `falukant_predefine.political_office_benefit` + ggf. `falukant_type.political_office_benefit_type`
|
||
|
||
CREATE TABLE IF NOT EXISTS falukant_data.political_benefit_last_tick (
|
||
id SERIAL PRIMARY KEY,
|
||
character_id INTEGER NOT NULL
|
||
REFERENCES falukant_data.character (id) ON DELETE CASCADE,
|
||
political_office_benefit_id INTEGER NOT NULL,
|
||
last_tick_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),
|
||
ticks_count INTEGER NOT NULL DEFAULT 0,
|
||
CONSTRAINT uq_political_benefit_last_tick UNIQUE (character_id, political_office_benefit_id)
|
||
);
|
||
|
||
CREATE INDEX IF NOT EXISTS idx_political_benefit_last_tick_character
|
||
ON falukant_data.political_benefit_last_tick (character_id);
|
||
|
||
COMMENT ON TABLE falukant_data.political_benefit_last_tick IS
|
||
'Letzter reputation_periodic-Tick pro (Charakter × Benefit-Zeile aus political_office_benefit); Daemon: YpDaemon political_benefits.rs';
|
||
|
||
-- Optional: Spieler-Ernennungen (Backend legt Zeilen an; Daemon setzt nur abgelaufen)
|
||
CREATE TABLE IF NOT EXISTS falukant_data.political_appointment (
|
||
id SERIAL PRIMARY KEY,
|
||
appointer_character_id INTEGER NOT NULL
|
||
REFERENCES falukant_data.character (id) ON DELETE CASCADE,
|
||
target_character_id INTEGER
|
||
REFERENCES falukant_data.character (id) ON DELETE SET NULL,
|
||
office_type_id INTEGER NOT NULL
|
||
REFERENCES falukant_type.political_office_type (id),
|
||
region_id INTEGER NOT NULL
|
||
REFERENCES falukant_data.region (id),
|
||
status TEXT NOT NULL DEFAULT 'pending',
|
||
created_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),
|
||
updated_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),
|
||
expires_at TIMESTAMPTZ,
|
||
completed_office_id INTEGER
|
||
REFERENCES falukant_data.political_office (id) ON DELETE SET NULL
|
||
);
|
||
|
||
CREATE INDEX IF NOT EXISTS idx_political_appointment_status_expires
|
||
ON falukant_data.political_appointment (status, expires_at);
|
||
|
||
COMMENT ON TABLE falukant_data.political_appointment IS
|
||
'Ernennungen (Backend); Daemon markiert pending → expired wenn expires_at überschritten';
|