feat: categories + tariffs — migration, API routes, frontend integration

This commit is contained in:
2026-03-23 11:42:29 +03:00
parent b494224af0
commit 5c40b154d0
7 changed files with 459 additions and 64 deletions

View File

@@ -0,0 +1,33 @@
-- Migration 018 — room_categories + tariffs
CREATE TABLE IF NOT EXISTS room_categories (
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
hotel_id UUID NOT NULL REFERENCES hotels(id) ON DELETE CASCADE,
name VARCHAR(100) NOT NULL,
description TEXT NOT NULL DEFAULT '',
color VARCHAR(20) NOT NULL DEFAULT '#4F46E5',
amenities TEXT[] NOT NULL DEFAULT '{}',
photos TEXT[] NOT NULL DEFAULT '{}',
sort_order INTEGER NOT NULL DEFAULT 0,
created_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),
updated_at TIMESTAMPTZ NOT NULL DEFAULT NOW()
);
CREATE TABLE IF NOT EXISTS tariffs (
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
hotel_id UUID NOT NULL REFERENCES hotels(id) ON DELETE CASCADE,
name VARCHAR(100) NOT NULL,
code VARCHAR(20) NOT NULL,
meal_plan VARCHAR(20) NOT NULL DEFAULT 'no_meals',
inclusions TEXT[] NOT NULL DEFAULT '{}',
modifier_type VARCHAR(10) NOT NULL DEFAULT 'fixed'
CHECK (modifier_type IN ('fixed', 'percent')),
modifier_value INTEGER NOT NULL DEFAULT 0,
min_nights INTEGER NOT NULL DEFAULT 1,
cancellation_policy VARCHAR(20) NOT NULL DEFAULT 'flexible'
CHECK (cancellation_policy IN ('flexible', 'moderate', 'strict', 'nonrefundable')),
description TEXT NOT NULL DEFAULT '',
is_active BOOLEAN NOT NULL DEFAULT true,
created_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),
updated_at TIMESTAMPTZ NOT NULL DEFAULT NOW()
);