Files
AnchorOS/scripts/update_business_hours.sql
Marco Gallegos 583a25a6f6 feat: implement customer registration flow and business hours system
Major changes:
- Add customer registration with email/phone lookup (app/booking/registro)
- Add customers API endpoint (app/api/customers/route)
- Implement business hours for locations (mon-fri 10-7, sat 10-6, sun closed)
- Fix availability function type casting issues
- Add business hours utilities (lib/utils/business-hours.ts)
- Update Location type to include business_hours JSONB
- Add mock payment component for testing
- Remove Supabase auth from booking flow
- Fix /cita redirect path in booking flow

Database migrations:
- Add category column to services table
- Add business_hours JSONB column to locations table
- Fix availability functions with proper type casting
- Update get_detailed_availability to use business_hours

Features:
- Customer lookup by email or phone
- Auto-redirect to registration if customer not found
- Pre-fill customer data if exists
- Business hours per day of week
- Location-specific opening/closing times
2026-01-17 00:29:49 -06:00

64 lines
2.0 KiB
SQL

-- Update business_hours with correct structure and values
-- Execute in Supabase Dashboard: Database > SQL Editor
-- First, check current state
SELECT
id,
name,
business_hours->>'monday' as monday_check,
(business_hours->'monday'->>'open') as monday_open_check,
(business_hours->'monday'->>'close') as monday_close_check
FROM locations
LIMIT 1;
-- Update with correct structure - Monday to Friday 10-7, Saturday 10-6, Sunday closed
UPDATE locations
SET business_hours = '{
"monday": {"open": "10:00", "close": "19:00", "is_closed": false},
"tuesday": {"open": "10:00", "close": "19:00", "is_closed": false},
"wednesday": {"open": "10:00", "close": "19:00", "is_closed": false},
"thursday": {"open": "10:00", "close": "19:00", "is_closed": false},
"friday": {"open": "10:00", "close": "19:00", "is_closed": false},
"saturday": {"open": "10:00", "close": "18:00", "is_closed": false},
"sunday": {"is_closed": true}
}'::jsonb;
-- Verify the update
SELECT
id,
name,
timezone,
business_hours
FROM locations
LIMIT 1;
-- Test extraction for different days
SELECT
'Monday' as day,
(business_hours->'monday'->>'open')::TIME as open_time,
(business_hours->'monday'->>'close')::TIME as close_time,
business_hours->'monday'->>'is_closed' as is_closed
FROM locations
UNION ALL
SELECT
'Saturday' as day,
(business_hours->'saturday'->>'open')::TIME as open_time,
(business_hours->'saturday'->>'close')::TIME as close_time,
business_hours->'saturday'->>'is_closed' as is_closed
FROM locations
UNION ALL
SELECT
'Sunday' as day,
(business_hours->'sunday'->>'open')::TIME as open_time,
(business_hours->'sunday'->>'close')::TIME as close_time,
business_hours->'sunday'->>'is_closed' as is_closed
FROM locations;
-- Test the get_detailed_availability function
SELECT * FROM get_detailed_availability(
(SELECT id FROM locations LIMIT 1),
(SELECT id FROM services WHERE is_active = true LIMIT 1),
CURRENT_DATE,
60
);