-- Add column to toggle accommodations module ALTER TABLE public.families ADD enable_accommodations boolean NOT NULL DEFAULT false; COMMENT ON COLUMN public.families.enable_accommodations IS 'Specify whether accommodations feature is enabled for the family'; -- Create tables CREATE TABLE IF NOT EXISTS accommodations_list ( id SERIAL PRIMARY KEY, family_id integer NOT NULL REFERENCES families, time_create BIGINT NOT NULL, time_update BIGINT NOT NULL, name VARCHAR(50) NOT NULL, need_validation BOOLEAN NOT NULL DEFAULT true, description text NULL, open_to_reservations BOOLEAN NOT NULL DEFAULT false ); COMMENT ON COLUMN accommodations_list.need_validation is 'true if family admin review is required for validation. False otherwise'; COMMENT ON COLUMN accommodations_list.open_to_reservations is 'true if reservations can be created / updated. False otherwise'; CREATE TABLE IF NOT EXISTS accommodations_reservations ( id SERIAL PRIMARY KEY, family_id integer NOT NULL REFERENCES families ON DELETE CASCADE, accommodation_id integer NOT NULL REFERENCES accommodations_list ON DELETE CASCADE, user_id INTEGER NOT NULL REFERENCES users ON DELETE CASCADE, time_create BIGINT NOT NULL, time_update BIGINT NOT NULL, reservation_start BIGINT NOT NULL, reservation_end BIGINT NOT NULL, validated BOOLEAN NULL ); COMMENT ON COLUMN accommodations_reservations.validated is 'null if not reviewed yet. true if reservation is accepted. false if reservation is rejected'; CREATE TABLE IF NOT EXISTS accommodations_reservations_cals_urls ( id SERIAL PRIMARY KEY, family_id integer NOT NULL REFERENCES families ON DELETE CASCADE, accommodation_id integer NULL REFERENCES accommodations_list ON DELETE CASCADE, user_id INTEGER NOT NULL REFERENCES users ON DELETE CASCADE, name VARCHAR(50) NOT NULL, token VARCHAR(50) NOT NULL, time_create BIGINT NOT NULL, time_used BIGINT NOT NULL ); COMMENT ON COLUMN accommodations_reservations_cals_urls.accommodation_id is 'null to get reservations of all accommodations. otherwise get the reservations of the specified accommodation only';