Agregar campo username a User entity y DTO

- Columna username (unique, nullable) en auth.users
- Campo username en CreateUserDto y UpdateUserDto

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
2026-03-17 11:47:37 -04:00
parent 6e0ad420ab
commit 8b6483aa7d
971 changed files with 16339 additions and 752 deletions

226
scripts/seed-monuments.sql Normal file
View File

@@ -0,0 +1,226 @@
-- Script para poblar monumentos de RD y Puerto Rico
-- Coordenadas en formato PostgreSQL point: (longitude, latitude)
-- Agregar unique constraint en slug si no existe
DO $$
BEGIN
IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'places_of_interest_slug_key') THEN
ALTER TABLE tourism.places_of_interest ADD CONSTRAINT places_of_interest_slug_key UNIQUE (slug);
END IF;
EXCEPTION
WHEN duplicate_object THEN NULL;
END $$;
-- REPÚBLICA DOMINICANA - ZONA COLONIAL
INSERT INTO tourism.places_of_interest (name, slug, category, coordinates, country, address, featured, active, created_at, updated_at)
VALUES ('Catedral Primada de América', 'catedral-primada-de-america', 'monument', point(-69.884250, 18.472988), 'DO', 'Calle Arzobispo Meriño, Zona Colonial, Santo Domingo', true, true, NOW(), NOW())
ON CONFLICT (slug) DO UPDATE SET name = EXCLUDED.name, coordinates = EXCLUDED.coordinates, address = EXCLUDED.address, updated_at = NOW();
INSERT INTO tourism.places_of_interest (name, slug, category, coordinates, country, address, featured, active, created_at, updated_at)
VALUES ('Fortaleza Ozama', 'fortaleza-ozama', 'fortress', point(-69.8817, 18.4732), 'DO', 'Calle Las Damas, Zona Colonial, Santo Domingo', true, true, NOW(), NOW())
ON CONFLICT (slug) DO UPDATE SET name = EXCLUDED.name, coordinates = EXCLUDED.coordinates, address = EXCLUDED.address, updated_at = NOW();
INSERT INTO tourism.places_of_interest (name, slug, category, coordinates, country, address, featured, active, created_at, updated_at)
VALUES ('Alcázar de Colón', 'alcazar-de-colon', 'palace', point(-69.8832, 18.4775), 'DO', 'Plaza de España, Zona Colonial, Santo Domingo', true, true, NOW(), NOW())
ON CONFLICT (slug) DO UPDATE SET name = EXCLUDED.name, coordinates = EXCLUDED.coordinates, address = EXCLUDED.address, updated_at = NOW();
INSERT INTO tourism.places_of_interest (name, slug, category, coordinates, country, address, featured, active, created_at, updated_at)
VALUES ('Faro a Colón', 'faro-a-colon', 'monument', point(-69.8682, 18.4786), 'DO', 'Av. España, Santo Domingo Este', true, true, NOW(), NOW())
ON CONFLICT (slug) DO UPDATE SET name = EXCLUDED.name, coordinates = EXCLUDED.coordinates, address = EXCLUDED.address, updated_at = NOW();
INSERT INTO tourism.places_of_interest (name, slug, category, coordinates, country, address, featured, active, created_at, updated_at)
VALUES ('Panteón Nacional', 'panteon-nacional', 'monument', point(-69.8845, 18.4735), 'DO', 'Calle Las Damas, Zona Colonial, Santo Domingo', true, true, NOW(), NOW())
ON CONFLICT (slug) DO UPDATE SET name = EXCLUDED.name, coordinates = EXCLUDED.coordinates, address = EXCLUDED.address, updated_at = NOW();
INSERT INTO tourism.places_of_interest (name, slug, category, coordinates, country, address, featured, active, created_at, updated_at)
VALUES ('Parque Colón', 'parque-colon', 'park', point(-69.8842, 18.4730), 'DO', 'Calle El Conde, Zona Colonial, Santo Domingo', false, true, NOW(), NOW())
ON CONFLICT (slug) DO UPDATE SET name = EXCLUDED.name, coordinates = EXCLUDED.coordinates, address = EXCLUDED.address, updated_at = NOW();
INSERT INTO tourism.places_of_interest (name, slug, category, coordinates, country, address, featured, active, created_at, updated_at)
VALUES ('Calle Las Damas', 'calle-las-damas', 'street', point(-69.8820, 18.4738), 'DO', 'Zona Colonial, Santo Domingo', false, true, NOW(), NOW())
ON CONFLICT (slug) DO UPDATE SET name = EXCLUDED.name, coordinates = EXCLUDED.coordinates, address = EXCLUDED.address, updated_at = NOW();
INSERT INTO tourism.places_of_interest (name, slug, category, coordinates, country, address, featured, active, created_at, updated_at)
VALUES ('Museo de las Casas Reales', 'museo-casas-reales', 'museum', point(-69.8825, 18.4742), 'DO', 'Calle Las Damas, Zona Colonial, Santo Domingo', true, true, NOW(), NOW())
ON CONFLICT (slug) DO UPDATE SET name = EXCLUDED.name, coordinates = EXCLUDED.coordinates, address = EXCLUDED.address, updated_at = NOW();
INSERT INTO tourism.places_of_interest (name, slug, category, coordinates, country, address, featured, active, created_at, updated_at)
VALUES ('Puerta del Conde', 'puerta-del-conde', 'monument', point(-69.8955, 18.4692), 'DO', 'Parque Independencia, Santo Domingo', true, true, NOW(), NOW())
ON CONFLICT (slug) DO UPDATE SET name = EXCLUDED.name, coordinates = EXCLUDED.coordinates, address = EXCLUDED.address, updated_at = NOW();
INSERT INTO tourism.places_of_interest (name, slug, category, coordinates, country, address, featured, active, created_at, updated_at)
VALUES ('Parque Independencia', 'parque-independencia', 'park', point(-69.8960, 18.4688), 'DO', 'Av. Bolívar, Santo Domingo', true, true, NOW(), NOW())
ON CONFLICT (slug) DO UPDATE SET name = EXCLUDED.name, coordinates = EXCLUDED.coordinates, address = EXCLUDED.address, updated_at = NOW();
INSERT INTO tourism.places_of_interest (name, slug, category, coordinates, country, address, featured, active, created_at, updated_at)
VALUES ('Los Tres Ojos', 'los-tres-ojos', 'natural', point(-69.8545, 18.4695), 'DO', 'Parque Mirador del Este, Santo Domingo Este', true, true, NOW(), NOW())
ON CONFLICT (slug) DO UPDATE SET name = EXCLUDED.name, coordinates = EXCLUDED.coordinates, address = EXCLUDED.address, updated_at = NOW();
INSERT INTO tourism.places_of_interest (name, slug, category, coordinates, country, address, featured, active, created_at, updated_at)
VALUES ('Jardín Botánico Nacional', 'jardin-botanico-nacional', 'park', point(-69.9467, 18.4950), 'DO', 'Av. República de Colombia, Santo Domingo', true, true, NOW(), NOW())
ON CONFLICT (slug) DO UPDATE SET name = EXCLUDED.name, coordinates = EXCLUDED.coordinates, address = EXCLUDED.address, updated_at = NOW();
INSERT INTO tourism.places_of_interest (name, slug, category, coordinates, country, address, featured, active, created_at, updated_at)
VALUES ('Palacio Nacional', 'palacio-nacional', 'palace', point(-69.9140, 18.4750), 'DO', 'Av. México, Santo Domingo', true, true, NOW(), NOW())
ON CONFLICT (slug) DO UPDATE SET name = EXCLUDED.name, coordinates = EXCLUDED.coordinates, address = EXCLUDED.address, updated_at = NOW();
INSERT INTO tourism.places_of_interest (name, slug, category, coordinates, country, address, featured, active, created_at, updated_at)
VALUES ('Ruinas del Hospital San Nicolás de Bari', 'ruinas-hospital-san-nicolas', 'ruins', point(-69.8852, 18.4722), 'DO', 'Calle Hostos, Zona Colonial, Santo Domingo', false, true, NOW(), NOW())
ON CONFLICT (slug) DO UPDATE SET name = EXCLUDED.name, coordinates = EXCLUDED.coordinates, address = EXCLUDED.address, updated_at = NOW();
INSERT INTO tourism.places_of_interest (name, slug, category, coordinates, country, address, featured, active, created_at, updated_at)
VALUES ('Iglesia de Santa Bárbara', 'iglesia-santa-barbara', 'church', point(-69.8812, 18.4755), 'DO', 'Calle Isabel la Católica, Zona Colonial, Santo Domingo', false, true, NOW(), NOW())
ON CONFLICT (slug) DO UPDATE SET name = EXCLUDED.name, coordinates = EXCLUDED.coordinates, address = EXCLUDED.address, updated_at = NOW();
INSERT INTO tourism.places_of_interest (name, slug, category, coordinates, country, address, featured, active, created_at, updated_at)
VALUES ('Convento de los Dominicos', 'convento-dominicos', 'monument', point(-69.8868, 18.4725), 'DO', 'Calle Padre Billini, Zona Colonial, Santo Domingo', false, true, NOW(), NOW())
ON CONFLICT (slug) DO UPDATE SET name = EXCLUDED.name, coordinates = EXCLUDED.coordinates, address = EXCLUDED.address, updated_at = NOW();
INSERT INTO tourism.places_of_interest (name, slug, category, coordinates, country, address, featured, active, created_at, updated_at)
VALUES ('Plaza de España', 'plaza-de-espana', 'plaza', point(-69.8828, 18.4770), 'DO', 'Zona Colonial, Santo Domingo', true, true, NOW(), NOW())
ON CONFLICT (slug) DO UPDATE SET name = EXCLUDED.name, coordinates = EXCLUDED.coordinates, address = EXCLUDED.address, updated_at = NOW();
-- RD - SANTIAGO
INSERT INTO tourism.places_of_interest (name, slug, category, coordinates, country, address, featured, active, created_at, updated_at)
VALUES ('Monumento a los Héroes de la Restauración', 'monumento-heroes-restauracion', 'monument', point(-70.6931, 19.4792), 'DO', 'Centro de Santiago de los Caballeros', true, true, NOW(), NOW())
ON CONFLICT (slug) DO UPDATE SET name = EXCLUDED.name, coordinates = EXCLUDED.coordinates, address = EXCLUDED.address, updated_at = NOW();
-- RD - PUERTO PLATA
INSERT INTO tourism.places_of_interest (name, slug, category, coordinates, country, address, featured, active, created_at, updated_at)
VALUES ('Fortaleza San Felipe', 'fortaleza-san-felipe', 'fortress', point(-70.6940, 19.7982), 'DO', 'Puerto Plata', true, true, NOW(), NOW())
ON CONFLICT (slug) DO UPDATE SET name = EXCLUDED.name, coordinates = EXCLUDED.coordinates, address = EXCLUDED.address, updated_at = NOW();
INSERT INTO tourism.places_of_interest (name, slug, category, coordinates, country, address, featured, active, created_at, updated_at)
VALUES ('Teleférico de Puerto Plata', 'teleferico-puerto-plata', 'attraction', point(-70.6875, 19.7842), 'DO', 'Monte Isabel de Torres, Puerto Plata', true, true, NOW(), NOW())
ON CONFLICT (slug) DO UPDATE SET name = EXCLUDED.name, coordinates = EXCLUDED.coordinates, address = EXCLUDED.address, updated_at = NOW();
-- RD - LA ROMANA
INSERT INTO tourism.places_of_interest (name, slug, category, coordinates, country, address, featured, active, created_at, updated_at)
VALUES ('Altos de Chavón', 'altos-de-chavon', 'village', point(-68.9620, 18.4270), 'DO', 'Casa de Campo, La Romana', true, true, NOW(), NOW())
ON CONFLICT (slug) DO UPDATE SET name = EXCLUDED.name, coordinates = EXCLUDED.coordinates, address = EXCLUDED.address, updated_at = NOW();
-- RD - SAMANÁ
INSERT INTO tourism.places_of_interest (name, slug, category, coordinates, country, address, featured, active, created_at, updated_at)
VALUES ('Salto El Limón', 'salto-el-limon', 'natural', point(-69.4420, 19.2850), 'DO', 'El Limón, Samaná', true, true, NOW(), NOW())
ON CONFLICT (slug) DO UPDATE SET name = EXCLUDED.name, coordinates = EXCLUDED.coordinates, address = EXCLUDED.address, updated_at = NOW();
INSERT INTO tourism.places_of_interest (name, slug, category, coordinates, country, address, featured, active, created_at, updated_at)
VALUES ('Playa Rincón', 'playa-rincon', 'beach', point(-69.2385, 19.2120), 'DO', 'Samaná', true, true, NOW(), NOW())
ON CONFLICT (slug) DO UPDATE SET name = EXCLUDED.name, coordinates = EXCLUDED.coordinates, address = EXCLUDED.address, updated_at = NOW();
INSERT INTO tourism.places_of_interest (name, slug, category, coordinates, country, address, featured, active, created_at, updated_at)
VALUES ('Cayo Levantado', 'cayo-levantado', 'island', point(-69.3840, 19.1750), 'DO', 'Bahía de Samaná', true, true, NOW(), NOW())
ON CONFLICT (slug) DO UPDATE SET name = EXCLUDED.name, coordinates = EXCLUDED.coordinates, address = EXCLUDED.address, updated_at = NOW();
-- RD - HIGÜEY
INSERT INTO tourism.places_of_interest (name, slug, category, coordinates, country, address, featured, active, created_at, updated_at)
VALUES ('Basílica Nuestra Señora de la Altagracia', 'basilica-altagracia', 'church', point(-68.7108, 18.6155), 'DO', 'Higüey, La Altagracia', true, true, NOW(), NOW())
ON CONFLICT (slug) DO UPDATE SET name = EXCLUDED.name, coordinates = EXCLUDED.coordinates, address = EXCLUDED.address, updated_at = NOW();
-- RD - CONSTANZA
INSERT INTO tourism.places_of_interest (name, slug, category, coordinates, country, address, featured, active, created_at, updated_at)
VALUES ('Valle Nuevo', 'valle-nuevo', 'natural', point(-70.6020, 18.7880), 'DO', 'Constanza, La Vega', true, true, NOW(), NOW())
ON CONFLICT (slug) DO UPDATE SET name = EXCLUDED.name, coordinates = EXCLUDED.coordinates, address = EXCLUDED.address, updated_at = NOW();
-- RD - JARABACOA
INSERT INTO tourism.places_of_interest (name, slug, category, coordinates, country, address, featured, active, created_at, updated_at)
VALUES ('Salto de Jimenoa', 'salto-jimenoa', 'natural', point(-70.6210, 19.1320), 'DO', 'Jarabacoa, La Vega', true, true, NOW(), NOW())
ON CONFLICT (slug) DO UPDATE SET name = EXCLUDED.name, coordinates = EXCLUDED.coordinates, address = EXCLUDED.address, updated_at = NOW();
INSERT INTO tourism.places_of_interest (name, slug, category, coordinates, country, address, featured, active, created_at, updated_at)
VALUES ('Pico Duarte', 'pico-duarte', 'natural', point(-70.9893, 19.0291), 'DO', 'Cordillera Central', true, true, NOW(), NOW())
ON CONFLICT (slug) DO UPDATE SET name = EXCLUDED.name, coordinates = EXCLUDED.coordinates, address = EXCLUDED.address, updated_at = NOW();
-- RD - BAYAHIBE
INSERT INTO tourism.places_of_interest (name, slug, category, coordinates, country, address, featured, active, created_at, updated_at)
VALUES ('Isla Saona', 'isla-saona', 'island', point(-68.7280, 18.1550), 'DO', 'Parque Nacional del Este', true, true, NOW(), NOW())
ON CONFLICT (slug) DO UPDATE SET name = EXCLUDED.name, coordinates = EXCLUDED.coordinates, address = EXCLUDED.address, updated_at = NOW();
-- ==========================================
-- PUERTO RICO - VIEJO SAN JUAN
-- ==========================================
INSERT INTO tourism.places_of_interest (name, slug, category, coordinates, country, address, featured, active, created_at, updated_at)
VALUES ('Castillo San Felipe del Morro', 'castillo-san-felipe-del-morro', 'fortress', point(-66.1212, 18.4693), 'PR', '501 Calle Norzagaray, San Juan', true, true, NOW(), NOW())
ON CONFLICT (slug) DO UPDATE SET name = EXCLUDED.name, coordinates = EXCLUDED.coordinates, address = EXCLUDED.address, updated_at = NOW();
INSERT INTO tourism.places_of_interest (name, slug, category, coordinates, country, address, featured, active, created_at, updated_at)
VALUES ('Castillo San Cristóbal', 'castillo-san-cristobal', 'fortress', point(-66.1067, 18.4670), 'PR', 'Calle Norzagaray, San Juan', true, true, NOW(), NOW())
ON CONFLICT (slug) DO UPDATE SET name = EXCLUDED.name, coordinates = EXCLUDED.coordinates, address = EXCLUDED.address, updated_at = NOW();
INSERT INTO tourism.places_of_interest (name, slug, category, coordinates, country, address, featured, active, created_at, updated_at)
VALUES ('La Fortaleza', 'la-fortaleza', 'palace', point(-66.1190, 18.4641), 'PR', '63 Calle de la Fortaleza, San Juan', true, true, NOW(), NOW())
ON CONFLICT (slug) DO UPDATE SET name = EXCLUDED.name, coordinates = EXCLUDED.coordinates, address = EXCLUDED.address, updated_at = NOW();
INSERT INTO tourism.places_of_interest (name, slug, category, coordinates, country, address, featured, active, created_at, updated_at)
VALUES ('Catedral de San Juan Bautista', 'catedral-san-juan-bautista', 'church', point(-66.1170, 18.4660), 'PR', '153 Calle del Cristo, San Juan', true, true, NOW(), NOW())
ON CONFLICT (slug) DO UPDATE SET name = EXCLUDED.name, coordinates = EXCLUDED.coordinates, address = EXCLUDED.address, updated_at = NOW();
INSERT INTO tourism.places_of_interest (name, slug, category, coordinates, country, address, featured, active, created_at, updated_at)
VALUES ('Capilla del Cristo', 'capilla-del-cristo', 'church', point(-66.1195, 18.4636), 'PR', 'Calle del Cristo, San Juan', true, true, NOW(), NOW())
ON CONFLICT (slug) DO UPDATE SET name = EXCLUDED.name, coordinates = EXCLUDED.coordinates, address = EXCLUDED.address, updated_at = NOW();
INSERT INTO tourism.places_of_interest (name, slug, category, coordinates, country, address, featured, active, created_at, updated_at)
VALUES ('Casa Blanca', 'casa-blanca-pr', 'museum', point(-66.1185, 18.4685), 'PR', '1 Calle San Sebastián, San Juan', true, true, NOW(), NOW())
ON CONFLICT (slug) DO UPDATE SET name = EXCLUDED.name, coordinates = EXCLUDED.coordinates, address = EXCLUDED.address, updated_at = NOW();
INSERT INTO tourism.places_of_interest (name, slug, category, coordinates, country, address, featured, active, created_at, updated_at)
VALUES ('Paseo de la Princesa', 'paseo-de-la-princesa', 'promenade', point(-66.1175, 18.4620), 'PR', 'Paseo de la Princesa, San Juan', true, true, NOW(), NOW())
ON CONFLICT (slug) DO UPDATE SET name = EXCLUDED.name, coordinates = EXCLUDED.coordinates, address = EXCLUDED.address, updated_at = NOW();
INSERT INTO tourism.places_of_interest (name, slug, category, coordinates, country, address, featured, active, created_at, updated_at)
VALUES ('Puerta de San Juan', 'puerta-de-san-juan', 'monument', point(-66.1200, 18.4645), 'PR', 'Recinto Sur, San Juan', true, true, NOW(), NOW())
ON CONFLICT (slug) DO UPDATE SET name = EXCLUDED.name, coordinates = EXCLUDED.coordinates, address = EXCLUDED.address, updated_at = NOW();
INSERT INTO tourism.places_of_interest (name, slug, category, coordinates, country, address, featured, active, created_at, updated_at)
VALUES ('Cementerio Santa María Magdalena de Pazzis', 'cementerio-santa-maria-pazzis', 'cemetery', point(-66.1225, 18.4705), 'PR', 'Calle Norzagaray, San Juan', true, true, NOW(), NOW())
ON CONFLICT (slug) DO UPDATE SET name = EXCLUDED.name, coordinates = EXCLUDED.coordinates, address = EXCLUDED.address, updated_at = NOW();
INSERT INTO tourism.places_of_interest (name, slug, category, coordinates, country, address, featured, active, created_at, updated_at)
VALUES ('Plaza de Armas', 'plaza-de-armas-pr', 'plaza', point(-66.1155, 18.4655), 'PR', 'Calle San Francisco, San Juan', false, true, NOW(), NOW())
ON CONFLICT (slug) DO UPDATE SET name = EXCLUDED.name, coordinates = EXCLUDED.coordinates, address = EXCLUDED.address, updated_at = NOW();
INSERT INTO tourism.places_of_interest (name, slug, category, coordinates, country, address, featured, active, created_at, updated_at)
VALUES ('Parque de las Palomas', 'parque-de-las-palomas', 'park', point(-66.1190, 18.4635), 'PR', 'Final Calle del Cristo, San Juan', false, true, NOW(), NOW())
ON CONFLICT (slug) DO UPDATE SET name = EXCLUDED.name, coordinates = EXCLUDED.coordinates, address = EXCLUDED.address, updated_at = NOW();
-- PUERTO RICO - PONCE
INSERT INTO tourism.places_of_interest (name, slug, category, coordinates, country, address, featured, active, created_at, updated_at)
VALUES ('Parque de Bombas', 'parque-de-bombas', 'museum', point(-66.6142, 18.0125), 'PR', 'Plaza Las Delicias, Ponce', true, true, NOW(), NOW())
ON CONFLICT (slug) DO UPDATE SET name = EXCLUDED.name, coordinates = EXCLUDED.coordinates, address = EXCLUDED.address, updated_at = NOW();
INSERT INTO tourism.places_of_interest (name, slug, category, coordinates, country, address, featured, active, created_at, updated_at)
VALUES ('Catedral Nuestra Señora de Guadalupe', 'catedral-ponce', 'church', point(-66.6138, 18.0128), 'PR', 'Plaza Las Delicias, Ponce', false, true, NOW(), NOW())
ON CONFLICT (slug) DO UPDATE SET name = EXCLUDED.name, coordinates = EXCLUDED.coordinates, address = EXCLUDED.address, updated_at = NOW();
INSERT INTO tourism.places_of_interest (name, slug, category, coordinates, country, address, featured, active, created_at, updated_at)
VALUES ('Castillo Serrallés', 'castillo-serralles', 'palace', point(-66.6285, 18.0205), 'PR', 'El Vigía, Ponce', true, true, NOW(), NOW())
ON CONFLICT (slug) DO UPDATE SET name = EXCLUDED.name, coordinates = EXCLUDED.coordinates, address = EXCLUDED.address, updated_at = NOW();
-- PUERTO RICO - NATURALEZA
INSERT INTO tourism.places_of_interest (name, slug, category, coordinates, country, address, featured, active, created_at, updated_at)
VALUES ('El Yunque National Forest', 'el-yunque', 'natural', point(-65.7847, 18.3154), 'PR', 'Río Grande', true, true, NOW(), NOW())
ON CONFLICT (slug) DO UPDATE SET name = EXCLUDED.name, coordinates = EXCLUDED.coordinates, address = EXCLUDED.address, updated_at = NOW();
INSERT INTO tourism.places_of_interest (name, slug, category, coordinates, country, address, featured, active, created_at, updated_at)
VALUES ('Bahía Bioluminiscente de Vieques', 'bahia-bioluminiscente-vieques', 'natural', point(-65.4775, 18.0965), 'PR', 'Mosquito Bay, Vieques', true, true, NOW(), NOW())
ON CONFLICT (slug) DO UPDATE SET name = EXCLUDED.name, coordinates = EXCLUDED.coordinates, address = EXCLUDED.address, updated_at = NOW();
INSERT INTO tourism.places_of_interest (name, slug, category, coordinates, country, address, featured, active, created_at, updated_at)
VALUES ('Cueva del Indio', 'cueva-del-indio', 'natural', point(-66.6375, 18.4835), 'PR', 'Arecibo', true, true, NOW(), NOW())
ON CONFLICT (slug) DO UPDATE SET name = EXCLUDED.name, coordinates = EXCLUDED.coordinates, address = EXCLUDED.address, updated_at = NOW();
INSERT INTO tourism.places_of_interest (name, slug, category, coordinates, country, address, featured, active, created_at, updated_at)
VALUES ('Flamenco Beach', 'flamenco-beach', 'beach', point(-65.3180, 18.3290), 'PR', 'Culebra', true, true, NOW(), NOW())
ON CONFLICT (slug) DO UPDATE SET name = EXCLUDED.name, coordinates = EXCLUDED.coordinates, address = EXCLUDED.address, updated_at = NOW();
INSERT INTO tourism.places_of_interest (name, slug, category, coordinates, country, address, featured, active, created_at, updated_at)
VALUES ('Bahía Bioluminiscente de Fajardo', 'laguna-grande-fajardo', 'natural', point(-65.6350, 18.3640), 'PR', 'Las Croabas, Fajardo', true, true, NOW(), NOW())
ON CONFLICT (slug) DO UPDATE SET name = EXCLUDED.name, coordinates = EXCLUDED.coordinates, address = EXCLUDED.address, updated_at = NOW();
INSERT INTO tourism.places_of_interest (name, slug, category, coordinates, country, address, featured, active, created_at, updated_at)
VALUES ('Cañón San Cristóbal', 'canon-san-cristobal', 'natural', point(-66.3510, 18.1890), 'PR', 'Barranquitas/Aibonito', true, true, NOW(), NOW())
ON CONFLICT (slug) DO UPDATE SET name = EXCLUDED.name, coordinates = EXCLUDED.coordinates, address = EXCLUDED.address, updated_at = NOW();
-- Mostrar resultado
SELECT 'Seeding completado!' as status, COUNT(*) as total_places FROM tourism.places_of_interest WHERE active = true;
SELECT country, COUNT(*) as cantidad FROM tourism.places_of_interest WHERE active = true GROUP BY country;