Initial commit: SIBU 2.0 MISSION

This commit is contained in:
2026-02-21 09:53:31 -05:00
commit 0c7aa53c8b
400 changed files with 67708 additions and 0 deletions

View File

@ -0,0 +1,97 @@
-- Location: supabase/migrations/20251031165808_enhance_taxi_directory.sql
-- Schema Analysis: Existing taxis table with district column, needs shift column and terminology update
-- Integration Type: PARTIAL_EXISTS - Extending existing taxi module
-- Dependencies: Existing taxis and favorite_taxis tables
-- 1. Create shift enum type for taxi shifts
CREATE TYPE public.taxi_shift AS ENUM ('day', 'evening', 'night');
-- 2. Add shift column to existing taxis table
ALTER TABLE public.taxis
ADD COLUMN shift public.taxi_shift DEFAULT 'day'::public.taxi_shift;
-- 3. Rename district column to corregimiento for terminology consistency
ALTER TABLE public.taxis
RENAME COLUMN district TO corregimiento;
-- 4. Update existing indexes to match new column names
DROP INDEX IF EXISTS idx_taxis_district;
CREATE INDEX idx_taxis_corregimiento ON public.taxis(corregimiento);
CREATE INDEX idx_taxis_shift ON public.taxis(shift);
-- 5. Add updated sample data with new structure
DO $$
DECLARE
taxi1_id UUID := gen_random_uuid();
taxi2_id UUID := gen_random_uuid();
taxi3_id UUID := gen_random_uuid();
taxi4_id UUID := gen_random_uuid();
taxi5_id UUID := gen_random_uuid();
taxi6_id UUID := gen_random_uuid();
BEGIN
-- Remove existing sample data first
DELETE FROM public.taxis WHERE phone IN ('+507 720-1234', '+507 775-5678');
-- Insert comprehensive sample data with corregimiento and shift
INSERT INTO public.taxis (id, name, phone, corregimiento, shift, is_active, created_at, updated_at) VALUES
(taxi1_id, 'Taxi Central Boquete', '+507 720-1234', 'Boquete', 'day'::public.taxi_shift, true, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP),
(taxi2_id, 'Taxi Flores David', '+507 775-5678', 'David', 'evening'::public.taxi_shift, true, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP),
(taxi3_id, 'Taxi Noctuno David', '+507 776-9999', 'David', 'night'::public.taxi_shift, true, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP),
(taxi4_id, 'Taxi Diurno Chiriquí', '+507 721-4567', 'Chiriquí', 'day'::public.taxi_shift, true, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP),
(taxi5_id, 'Taxi Tarde Boquete', '+507 722-8890', 'Boquete', 'evening'::public.taxi_shift, true, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP),
(taxi6_id, 'Taxi Madrugada Chiriquí', '+507 723-1122', 'Chiriquí', 'night'::public.taxi_shift, true, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP);
EXCEPTION
WHEN unique_violation THEN
RAISE NOTICE 'Some taxi data already exists, skipping duplicates';
WHEN OTHERS THEN
RAISE NOTICE 'Error inserting taxi data: %', SQLERRM;
END $$;
-- 6. Create helper function for getting distinct corregimientos
CREATE OR REPLACE FUNCTION public.get_distinct_corregimientos()
RETURNS TABLE(corregimiento TEXT)
LANGUAGE sql
STABLE
SECURITY DEFINER
AS $$
SELECT DISTINCT t.corregimiento::TEXT
FROM public.taxis t
WHERE t.is_active = true
ORDER BY t.corregimiento::TEXT;
$$;
-- 7. Create helper function for filtering taxis by corregimiento and shift
CREATE OR REPLACE FUNCTION public.filter_taxis_by_criteria(
selected_corregimiento TEXT DEFAULT NULL,
selected_shift TEXT DEFAULT NULL
)
RETURNS TABLE(
id UUID,
name TEXT,
phone TEXT,
corregimiento TEXT,
shift TEXT,
is_active BOOLEAN,
created_at TIMESTAMPTZ,
updated_at TIMESTAMPTZ
)
LANGUAGE sql
STABLE
SECURITY DEFINER
AS $$
SELECT
t.id,
t.name,
t.phone,
t.corregimiento::TEXT,
t.shift::TEXT,
t.is_active,
t.created_at,
t.updated_at
FROM public.taxis t
WHERE t.is_active = true
AND (selected_corregimiento IS NULL OR t.corregimiento = selected_corregimiento)
AND (selected_shift IS NULL OR t.shift::TEXT = selected_shift)
ORDER BY t.name ASC;
$$;