CREATE TABLE IF NOT EXISTS resources ( id UUID PRIMARY KEY DEFAULT gen_random_uuid(), tenant_id UUID NOT NULL, name TEXT NOT NULL, type TEXT NOT NULL CHECK (type IN ('room', 'vehicle', 'equipment', 'other')), location TEXT, capacity INTEGER, description TEXT, contact_email TEXT, is_active BOOLEAN DEFAULT true, metadata JSONB DEFAULT '{}', created_at TIMESTAMPTZ DEFAULT NOW(), updated_at TIMESTAMPTZ DEFAULT NOW() ); CREATE TABLE IF NOT EXISTS resources_bookings ( id UUID PRIMARY KEY DEFAULT gen_random_uuid(), resource_id UUID NOT NULL REFERENCES resources(id) ON DELETE CASCADE, event_id TEXT, start_time TIMESTAMPTZ NOT NULL, end_time TIMESTAMPTZ NOT NULL, booked_by TEXT NOT NULL, created_at TIMESTAMPTZ DEFAULT NOW() ); CREATE INDEX IF NOT EXISTS idx_resources_tenant ON resources(tenant_id); CREATE INDEX IF NOT EXISTS idx_resources_type ON resources(type); CREATE INDEX IF NOT EXISTS idx_bookings_resource_time ON resources_bookings(resource_id, start_time, end_time); CREATE INDEX IF NOT EXISTS idx_bookings_time ON resources_bookings(start_time, end_time);