Add missing Resos tables to schema.sql
resos_custom_field_mapping, resos_opening_hours_mapping, resos_manual_breakfast_periods, resos_bookings_data, resos_bookings_stats, resos_booking_pace were never added to the schema — they only existed in the original standalone Postgres instance. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
parent
7dfaa5a9fb
commit
9761e88e9b
1 changed files with 130 additions and 0 deletions
|
|
@ -1001,3 +1001,133 @@ INSERT INTO system_config (config_key, config_value, description) VALUES
|
|||
('recon_sales_breakdown_columns', '[]', 'Sales breakdown column configuration (JSON)'),
|
||||
('recon_safe_cash_target', '0.00', 'Target amount for safe cash float')
|
||||
ON CONFLICT (config_key) DO NOTHING;
|
||||
|
||||
|
||||
-- ============================================
|
||||
-- WEATHER DATA (Open-Meteo ERA5 archive)
|
||||
-- Location: Stow on the Wold, GL54 1JX (51.9253°N, -1.7272°W, 230m)
|
||||
-- ============================================
|
||||
|
||||
CREATE TABLE IF NOT EXISTS weather_data (
|
||||
id SERIAL PRIMARY KEY,
|
||||
date DATE NOT NULL UNIQUE,
|
||||
temperature_max DECIMAL(5,2), -- °C
|
||||
temperature_min DECIMAL(5,2), -- °C
|
||||
temperature_mean DECIMAL(5,2), -- °C
|
||||
precipitation_sum DECIMAL(7,2), -- mm total (rain + snow)
|
||||
rain_sum DECIMAL(7,2), -- mm rain only
|
||||
snowfall_sum DECIMAL(7,2), -- cm snowfall
|
||||
snow_depth_max DECIMAL(7,3), -- m snow depth
|
||||
windspeed_max DECIMAL(6,2), -- km/h
|
||||
sunshine_hours DECIMAL(5,2), -- hours (converted from seconds)
|
||||
weathercode SMALLINT, -- WMO weather interpretation code
|
||||
fetched_at TIMESTAMP DEFAULT NOW()
|
||||
);
|
||||
|
||||
CREATE INDEX IF NOT EXISTS idx_weather_data_date ON weather_data(date);
|
||||
|
||||
INSERT INTO system_config (config_key, config_value, description) VALUES
|
||||
('weather_sync_enabled', 'true', 'Enable daily weather data sync from Open-Meteo'),
|
||||
('weather_sync_time', '05:15', 'Daily weather sync time (HH:MM)'),
|
||||
('weather_location_name', 'Stow on the Wold, GL54 1JX', 'Human-readable location name for weather data'),
|
||||
('weather_latitude', '51.9253', 'Latitude for weather data fetch (decimal degrees)'),
|
||||
('weather_longitude', '-1.7272', 'Longitude for weather data fetch (decimal degrees)'),
|
||||
('weather_timezone', 'Europe/London', 'Timezone for weather data (IANA tz name)')
|
||||
ON CONFLICT (config_key) DO NOTHING;
|
||||
|
||||
|
||||
-- ============================================
|
||||
-- RESOS RESTAURANT INTEGRATION
|
||||
-- ============================================
|
||||
|
||||
CREATE TABLE IF NOT EXISTS resos_custom_field_mapping (
|
||||
field_id TEXT PRIMARY KEY,
|
||||
field_name TEXT NOT NULL DEFAULT '',
|
||||
field_type TEXT NOT NULL DEFAULT '',
|
||||
maps_to TEXT NOT NULL,
|
||||
value_for_true TEXT,
|
||||
updated_at TIMESTAMPTZ NOT NULL DEFAULT NOW()
|
||||
);
|
||||
|
||||
CREATE TABLE IF NOT EXISTS resos_opening_hours_mapping (
|
||||
opening_hour_id TEXT PRIMARY KEY,
|
||||
opening_hour_name TEXT NOT NULL DEFAULT '',
|
||||
period_type TEXT NOT NULL,
|
||||
display_name TEXT,
|
||||
is_regular BOOLEAN NOT NULL DEFAULT TRUE,
|
||||
updated_at TIMESTAMPTZ NOT NULL DEFAULT NOW()
|
||||
);
|
||||
|
||||
CREATE TABLE IF NOT EXISTS resos_manual_breakfast_periods (
|
||||
day_of_week INTEGER PRIMARY KEY,
|
||||
start_time TIME,
|
||||
end_time TIME,
|
||||
is_active BOOLEAN NOT NULL DEFAULT TRUE,
|
||||
updated_at TIMESTAMPTZ NOT NULL DEFAULT NOW()
|
||||
);
|
||||
|
||||
CREATE TABLE IF NOT EXISTS resos_bookings_data (
|
||||
id SERIAL PRIMARY KEY,
|
||||
resos_id TEXT NOT NULL UNIQUE,
|
||||
booking_date DATE NOT NULL,
|
||||
booking_time TEXT,
|
||||
opening_hour_id TEXT,
|
||||
period_type TEXT,
|
||||
covers INTEGER NOT NULL DEFAULT 0,
|
||||
status TEXT,
|
||||
source TEXT,
|
||||
table_name TEXT,
|
||||
table_area TEXT,
|
||||
is_hotel_guest BOOLEAN,
|
||||
is_dbb BOOLEAN,
|
||||
is_package BOOLEAN,
|
||||
hotel_booking_number TEXT,
|
||||
group_exclude_field BOOLEAN,
|
||||
total_guests INTEGER,
|
||||
booking_placed TIMESTAMPTZ,
|
||||
notes TEXT,
|
||||
raw_json JSONB,
|
||||
fetched_at TIMESTAMPTZ NOT NULL DEFAULT NOW()
|
||||
);
|
||||
CREATE INDEX IF NOT EXISTS idx_resos_bookings_date ON resos_bookings_data (booking_date);
|
||||
CREATE INDEX IF NOT EXISTS idx_resos_bookings_status ON resos_bookings_data (status);
|
||||
CREATE INDEX IF NOT EXISTS idx_resos_bookings_period ON resos_bookings_data (period_type);
|
||||
|
||||
CREATE TABLE IF NOT EXISTS resos_bookings_stats (
|
||||
date DATE PRIMARY KEY,
|
||||
breakfast_covers INTEGER NOT NULL DEFAULT 0,
|
||||
lunch_covers INTEGER NOT NULL DEFAULT 0,
|
||||
afternoon_covers INTEGER NOT NULL DEFAULT 0,
|
||||
dinner_covers INTEGER NOT NULL DEFAULT 0,
|
||||
other_covers INTEGER NOT NULL DEFAULT 0,
|
||||
total_covers INTEGER NOT NULL DEFAULT 0,
|
||||
breakfast_bookings INTEGER NOT NULL DEFAULT 0,
|
||||
lunch_bookings INTEGER NOT NULL DEFAULT 0,
|
||||
afternoon_bookings INTEGER NOT NULL DEFAULT 0,
|
||||
dinner_bookings INTEGER NOT NULL DEFAULT 0,
|
||||
other_bookings INTEGER NOT NULL DEFAULT 0,
|
||||
total_bookings INTEGER NOT NULL DEFAULT 0,
|
||||
covers_by_source JSONB NOT NULL DEFAULT '{}',
|
||||
covers_by_period JSONB NOT NULL DEFAULT '{}',
|
||||
hotel_guest_covers INTEGER NOT NULL DEFAULT 0,
|
||||
non_hotel_guest_covers INTEGER NOT NULL DEFAULT 0,
|
||||
dbb_covers INTEGER NOT NULL DEFAULT 0,
|
||||
package_covers INTEGER NOT NULL DEFAULT 0,
|
||||
hotel_booking_numbers JSONB NOT NULL DEFAULT '{}',
|
||||
distinct_hotel_bookings INTEGER NOT NULL DEFAULT 0,
|
||||
bookings_with_hotel_link INTEGER NOT NULL DEFAULT 0,
|
||||
avg_party_size DECIMAL(5,2),
|
||||
avg_party_size_by_period JSONB NOT NULL DEFAULT '{}',
|
||||
aggregated_at TIMESTAMPTZ NOT NULL DEFAULT NOW()
|
||||
);
|
||||
|
||||
CREATE TABLE IF NOT EXISTS resos_booking_pace (
|
||||
booking_date DATE NOT NULL,
|
||||
pace_type TEXT NOT NULL,
|
||||
d0 INTEGER DEFAULT 0, d1 INTEGER DEFAULT 0, d2 INTEGER DEFAULT 0,
|
||||
d3 INTEGER DEFAULT 0, d7 INTEGER DEFAULT 0, d14 INTEGER DEFAULT 0,
|
||||
d21 INTEGER DEFAULT 0, d28 INTEGER DEFAULT 0, d60 INTEGER DEFAULT 0,
|
||||
d90 INTEGER DEFAULT 0,
|
||||
updated_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),
|
||||
PRIMARY KEY (booking_date, pace_type)
|
||||
);
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue