import { db, yePublicEntriesTable, type InsertPublicEntry } from "@workspace/db";

const image = (file: string) => `/showcase/${file}`;

const showcase = (entry: Omit<InsertPublicEntry, "kind" | "status" | "published"> & { slug: string }) => ({
  ...entry,
  kind: "showcase",
  status: "published",
  published: true,
});

const DEFAULT_PUBLIC_ENTRIES: InsertPublicEntry[] = [
  showcase({
    slug: "compactador-wacker-neuson",
    category: "equipment",
    titleEs: "Compactador Wacker Neuson RD12",
    titleEn: "Wacker Neuson RD12 Roller",
    summaryEs: "Equipo liviano para compactación y preparación de superficies.",
    summaryEn: "Light equipment for compaction and surface preparation.",
    bodyEs: "Maquinaria compacta para trabajos de preparación, mantenimiento y terminación de superficies. Solicita disponibilidad, entrega y operador.",
    bodyEn: "Compact equipment for preparation, maintenance, and surface finishing. Ask about availability, delivery, and an operator.",
    imageUrl: image("69755058_412919322913309_7957715925719842816_n_1789255010598.jpg"),
    imageAltEs: "Compactador Wacker Neuson RD12 amarillo con el logotipo de Y.E. Transport",
    imageAltEn: "Yellow Wacker Neuson RD12 roller with the Y.E. Transport logo",
    seoTitleEs: "Alquiler de compactador Wacker Neuson RD12 | Y.E.",
    seoTitleEn: "Wacker Neuson RD12 roller rental | Y.E.",
    seoDescriptionEs: "Alquila un compactador Wacker Neuson RD12 para preparación y terminación de superficies en Puerto Rico.",
    seoDescriptionEn: "Rent a Wacker Neuson RD12 roller for surface preparation and finishing in Puerto Rico.",
    featured: true,
    sortOrder: 1,
  }),
  showcase({
    slug: "placa-compactadora-para-obra",
    category: "tools",
    titleEs: "Placa compactadora para obra",
    titleEn: "Construction Plate Compactor",
    summaryEs: "Herramienta liviana para compactar terreno, agregados y bases.",
    summaryEn: "Light tool for compacting soil, aggregate, and base layers.",
    bodyEs: "Una solución práctica para trabajos residenciales, reparaciones y preparación de áreas de construcción.",
    bodyEn: "A practical solution for residential work, repairs, and construction area preparation.",
    imageUrl: image("69899138_412908219581086_9002698653000794112_n_1789255010599.jpg"),
    imageAltEs: "Placa compactadora naranja trabajando sobre terreno de construcción",
    imageAltEn: "Orange plate compactor working on construction ground",
    seoTitleEs: "Alquiler de placa compactadora para construcción",
    seoTitleEn: "Construction plate compactor rental",
    seoDescriptionEs: "Herramientas y equipos livianos para compactación y preparación de obras.",
    seoDescriptionEn: "Light tools and equipment for construction compaction and preparation.",
    sortOrder: 2,
  }),
  showcase({
    slug: "transporte-de-excavadora",
    category: "transport",
    titleEs: "Transporte de excavadora a obra",
    titleEn: "Excavator Transport to Jobsite",
    summaryEs: "Coordinación de transporte pesado para llevar maquinaria al lugar correcto.",
    summaryEn: "Heavy transport coordination to move machinery to the right jobsite.",
    bodyEs: "Coordinamos carga, traslado y entrega de maquinaria pesada para que tu frente de trabajo pueda comenzar a tiempo.",
    bodyEn: "We coordinate loading, hauling, and delivery of heavy equipment so your jobsite can start on time.",
    imageUrl: image("74214151_465557307649510_297529371189575680_n_1789255010599.jpg"),
    imageAltEs: "Camión con plataforma transportando una excavadora amarilla",
    imageAltEn: "Truck and trailer transporting a yellow excavator",
    seoTitleEs: "Transporte de excavadoras y maquinaria pesada",
    seoTitleEn: "Excavator and heavy equipment transport",
    seoDescriptionEs: "Servicio de transporte y entrega de maquinaria pesada para proyectos de construcción.",
    seoDescriptionEn: "Heavy equipment transport and delivery service for construction projects.",
    featured: true,
    sortOrder: 3,
  }),
  showcase({
    slug: "excavacion-y-preparacion-de-terreno",
    category: "project",
    titleEs: "Excavación y preparación de terreno",
    titleEn: "Excavation and Site Preparation",
    summaryEs: "Trabajo de movimiento de tierra y preparación de un área de obra.",
    summaryEn: "Earthmoving and preparation work for a construction area.",
    bodyEs: "Obra en proceso con excavadora de oruga para limpieza, excavación y preparación del terreno.",
    bodyEn: "Work in progress with a tracked excavator for clearing, excavation, and site preparation.",
    imageUrl: image("77059747_465557297649511_5484510071184424960_n_1789255010600.jpg"),
    imageAltEs: "Excavadora de oruga trabajando en un terreno abierto",
    imageAltEn: "Tracked excavator working on an open site",
    seoTitleEs: "Excavación y preparación de terrenos en Puerto Rico",
    seoTitleEn: "Excavation and site preparation in Puerto Rico",
    seoDescriptionEs: "Conoce nuestros trabajos de excavación, limpieza y preparación de terrenos para construcción.",
    seoDescriptionEn: "See our excavation, clearing, and site preparation work for construction.",
    featured: true,
    sortOrder: 4,
  }),
  showcase({
    slug: "iluminacion-portatil-para-construccion",
    category: "equipment",
    titleEs: "Iluminación portátil para construcción",
    titleEn: "Portable Construction Lighting",
    summaryEs: "Torres de iluminación para apoyar operaciones y trabajos extendidos.",
    summaryEn: "Lighting towers to support operations and extended work hours.",
    bodyEs: "Equipo portátil para apoyar la visibilidad y continuidad de trabajos en exteriores, mantenimiento y construcción.",
    bodyEn: "Portable equipment that supports visibility and continuity for outdoor work, maintenance, and construction.",
    imageUrl: image("79771438_493532328185341_530417023558090752_n_1789255010601.jpg"),
    imageAltEs: "Torre de iluminación portátil Wacker Neuson sobre una camioneta",
    imageAltEn: "Wacker Neuson portable light tower loaded on a pickup truck",
    seoTitleEs: "Alquiler de torres de iluminación para obra",
    seoTitleEn: "Portable light tower rental for jobsites",
    seoDescriptionEs: "Alquila iluminación portátil para obras, mantenimiento y operaciones en exteriores.",
    seoDescriptionEn: "Rent portable lighting for jobsites, maintenance, and outdoor operations.",
    sortOrder: 5,
  }),
  showcase({
    slug: "transporte-de-materiales-y-equipos",
    category: "transport",
    titleEs: "Transporte de materiales y equipos",
    titleEn: "Materials and Equipment Hauling",
    summaryEs: "Movimiento coordinado de equipos, suministros y materiales de construcción.",
    summaryEn: "Coordinated movement of equipment, supplies, and construction materials.",
    bodyEs: "Apoyamos cada etapa del proyecto con transporte coordinado para maquinaria, herramientas y materiales.",
    bodyEn: "We support every project stage with coordinated hauling for machinery, tools, and materials.",
    imageUrl: image("94738785_585486698989903_1312021288117600256_n_1789255010601.jpg"),
    imageAltEs: "Camión de carga preparado para transportar materiales de construcción",
    imageAltEn: "Freight truck prepared to haul construction materials",
    seoTitleEs: "Transporte de materiales de construcción",
    seoTitleEn: "Construction material hauling",
    seoDescriptionEs: "Transporte de carga y materiales para construcción residencial, comercial e industrial.",
    seoDescriptionEn: "Freight and material hauling for residential, commercial, and industrial construction.",
    sortOrder: 6,
  }),
  showcase({
    slug: "excavadora-john-deere-650",
    category: "equipment",
    titleEs: "Excavadora John Deere 650",
    titleEn: "John Deere 650 Excavator",
    summaryEs: "Excavadora de oruga para excavación, limpieza y movimiento de tierra.",
    summaryEn: "Tracked excavator for digging, clearing, and earthmoving.",
    bodyEs: "Equipo pesado para trabajos de terreno, excavación y preparación de proyectos de construcción.",
    bodyEn: "Heavy equipment for site work, excavation, and construction project preparation.",
    imageUrl: image("121736689_705610380310867_7564537922214829472_n_1789255010602.jpg"),
    imageAltEs: "Excavadora John Deere 650 estacionada en un área de trabajo",
    imageAltEn: "John Deere 650 excavator parked at a work area",
    seoTitleEs: "Alquiler de excavadora John Deere 650",
    seoTitleEn: "John Deere 650 excavator rental",
    seoDescriptionEs: "Maquinaria pesada para excavación, limpieza y movimiento de tierra en Puerto Rico.",
    seoDescriptionEn: "Heavy equipment for excavation, clearing, and earthmoving in Puerto Rico.",
    featured: true,
    sortOrder: 7,
  }),
  showcase({
    slug: "excavadora-en-operacion",
    category: "project",
    titleEs: "Excavadora en operación",
    titleEn: "Excavator in Operation",
    summaryEs: "Maquinaria activa para trabajos de excavación y preparación.",
    summaryEn: "Active machinery for excavation and preparation work.",
    bodyEs: "Nuestros equipos se incorporan al flujo de trabajo con coordinación de transporte y apoyo operativo.",
    bodyEn: "Our equipment joins the workflow with transport coordination and operational support.",
    imageUrl: image("121963059_705610286977543_2356769968337814030_n_1789255010602.jpg"),
    imageAltEs: "Excavadora amarilla realizando trabajo de terreno",
    imageAltEn: "Yellow excavator performing site work",
    seoTitleEs: "Excavación y movimiento de tierra con maquinaria pesada",
    seoTitleEn: "Excavation and earthmoving with heavy equipment",
    seoDescriptionEs: "Servicios de excavación y movimiento de tierra con maquinaria pesada y coordinación local.",
    seoDescriptionEn: "Excavation and earthmoving services with heavy equipment and local coordination.",
    sortOrder: 8,
  }),
  showcase({
    slug: "camion-y-plataforma-para-maquinaria",
    category: "transport",
    titleEs: "Camión y plataforma para maquinaria",
    titleEn: "Truck and Trailer for Heavy Equipment",
    summaryEs: "Equipo de transporte para movilizar excavadoras y maquinaria de gran tamaño.",
    summaryEn: "Transport equipment for moving excavators and oversized machinery.",
    bodyEs: "Apoyo de transporte para llevar los activos necesarios entre patios, proyectos y frentes de trabajo.",
    bodyEn: "Transport support to move the assets needed between yards, projects, and jobsites.",
    imageUrl: image("165308561_812132206325350_8235642444464927924_n_1789255010602.jpg"),
    imageAltEs: "Camión con plataforma cargando una excavadora en carretera",
    imageAltEn: "Truck and trailer carrying an excavator on the road",
    seoTitleEs: "Transporte de maquinaria con camión y plataforma",
    seoTitleEn: "Heavy equipment truck and trailer transport",
    seoDescriptionEs: "Movilización de excavadoras y maquinaria pesada con transporte coordinado.",
    seoDescriptionEn: "Coordinated hauling for excavators and heavy machinery.",
    sortOrder: 9,
  }),
  showcase({
    slug: "maquinaria-en-patio-de-operaciones",
    category: "equipment",
    titleEs: "Maquinaria en patio de operaciones",
    titleEn: "Equipment at Operations Yard",
    summaryEs: "Maquinaria disponible para apoyar distintos tipos de obra.",
    summaryEn: "Equipment available to support different types of projects.",
    bodyEs: "Consulta la disponibilidad y el equipo adecuado para tu ubicación, alcance y calendario.",
    bodyEn: "Ask about availability and the right equipment for your location, scope, and schedule.",
    imageUrl: image("165590213_812132296325341_3509444338071829515_n_1789255010603.jpg"),
    imageAltEs: "Excavadora y equipos pesados reunidos en un patio de operaciones",
    imageAltEn: "Excavator and heavy equipment gathered at an operations yard",
    seoTitleEs: "Equipo pesado disponible para alquiler",
    seoTitleEn: "Heavy equipment available for rental",
    seoDescriptionEs: "Explora equipos pesados disponibles para alquiler y apoyo a proyectos.",
    seoDescriptionEn: "Explore heavy equipment available for rental and project support.",
    sortOrder: 10,
  }),
  showcase({
    slug: "equipo-compacto-para-espacios-reducidos",
    category: "equipment",
    titleEs: "Equipo compacto para espacios reducidos",
    titleEn: "Compact Equipment for Tight Spaces",
    summaryEs: "Soluciones compactas para obras residenciales y áreas de acceso limitado.",
    summaryEn: "Compact solutions for residential work and limited-access areas.",
    bodyEs: "Maquinaria de menor escala para trabajos que requieren precisión, movilidad y cuidado del espacio.",
    bodyEn: "Smaller equipment for work that requires precision, mobility, and care for the surrounding space.",
    imageUrl: image("470793356_1649528249252404_5931877774248857651_n_1789255010603.jpg"),
    imageAltEs: "Equipo compacto de construcción en una zona residencial",
    imageAltEn: "Compact construction equipment in a residential area",
    seoTitleEs: "Alquiler de equipo compacto para construcción",
    seoTitleEn: "Compact construction equipment rental",
    seoDescriptionEs: "Equipo compacto para construcción residencial, mantenimiento y espacios de acceso limitado.",
    seoDescriptionEn: "Compact equipment for residential construction, maintenance, and tight-access areas.",
    sortOrder: 11,
  }),
  showcase({
    slug: "trabajo-de-preparacion-de-terreno",
    category: "project",
    titleEs: "Trabajo de preparación de terreno",
    titleEn: "Site Preparation Work",
    summaryEs: "Preparación de áreas para futuras etapas de construcción.",
    summaryEn: "Preparing areas for future construction stages.",
    bodyEs: "Documentamos trabajos de preparación para mantener claridad sobre el avance y las próximas fases.",
    bodyEn: "We document preparation work to keep progress and upcoming phases clear.",
    imageUrl: image("471220384_1649530439252185_5372024453903263766_n_1789255010603.jpg"),
    imageAltEs: "Equipo de construcción realizando preparación de terreno",
    imageAltEn: "Construction equipment performing site preparation",
    seoTitleEs: "Preparación de terrenos para construcción",
    seoTitleEn: "Construction site preparation",
    seoDescriptionEs: "Preparación de terrenos y apoyo operativo para iniciar proyectos de construcción.",
    seoDescriptionEn: "Site preparation and operational support to start construction projects.",
    sortOrder: 12,
  }),
  {
    kind: "post",
    slug: "como-elegir-equipo-pesado-para-tu-obra",
    category: "equipment-guides",
    status: "published",
    titleEs: "Cómo elegir el equipo pesado correcto para tu obra",
    titleEn: "How to Choose the Right Heavy Equipment for Your Job",
    summaryEs: "Cinco criterios prácticos para comparar tamaño, capacidad, acceso, calendario y transporte.",
    summaryEn: "Five practical criteria for comparing size, capacity, access, schedule, and transport.",
    bodyEs: "Elegir maquinaria no se trata solo de escoger el equipo más grande. Revisa el tipo de terreno, el alcance del trabajo, el acceso al sitio, el tiempo disponible y la necesidad de operador. Una evaluación inicial ayuda a reducir movimientos innecesarios y a mantener el proyecto en marcha.\n\nEn Y. E. Transport & Constructors coordinamos alquiler, transporte y apoyo operativo para que recibas una recomendación conectada al trabajo real.",
    bodyEn: "Choosing equipment is not only about selecting the largest machine. Review the ground conditions, work scope, site access, schedule, and operator needs. An early evaluation reduces unnecessary moves and keeps the project moving.\n\nY. E. Transport & Constructors coordinates rental, transport, and operational support so the recommendation matches the real work.",
    imageUrl: image("69755058_412919322913309_7957715925719842816_n_1789255010598.jpg"),
    imageAltEs: "Compactador y maquinaria de Y.E. para una guía de alquiler de equipo",
    imageAltEn: "Y.E. roller and equipment for a heavy equipment rental guide",
    seoTitleEs: "Guía para elegir equipo pesado de construcción",
    seoTitleEn: "Guide to choosing heavy construction equipment",
    seoDescriptionEs: "Aprende a seleccionar maquinaria pesada considerando terreno, acceso, capacidad, transporte y calendario.",
    seoDescriptionEn: "Learn how to select heavy equipment based on ground conditions, access, capacity, transport, and schedule.",
    published: true,
    featured: true,
    sortOrder: 1,
  },
  {
    kind: "post",
    slug: "preparacion-de-terreno-antes-de-construir",
    category: "construction",
    status: "published",
    titleEs: "Qué revisar antes de comenzar la preparación de un terreno",
    titleEn: "What to Review Before Starting Site Preparation",
    summaryEs: "Una lista inicial para organizar acceso, drenaje, movimiento de tierra y seguridad.",
    summaryEn: "An initial checklist for access, drainage, earthmoving, and safety.",
    bodyEs: "Antes de entrar con maquinaria, confirma los límites del área, los accesos, los servicios existentes, el manejo de agua y el plan de retiro de material. La coordinación temprana permite definir qué equipo se necesita y cómo se moverá de forma segura.\n\nCada terreno es distinto. La cotización debe considerar ubicación, condiciones reales, volumen de trabajo y las etapas que seguirán después.",
    bodyEn: "Before equipment arrives, confirm the area limits, access points, existing utilities, water management, and material removal plan. Early coordination helps define the equipment needed and how it will move safely.\n\nEvery site is different. A quote should account for location, real conditions, work volume, and the stages that follow.",
    imageUrl: image("77059747_465557297649511_5484510071184424960_n_1789255010600.jpg"),
    imageAltEs: "Excavadora preparando un terreno para construcción",
    imageAltEn: "Excavator preparing a construction site",
    seoTitleEs: "Preparación de terreno: guía para comenzar una obra",
    seoTitleEn: "Site preparation: a guide to starting construction",
    seoDescriptionEs: "Aspectos que debes revisar antes de comenzar excavación, limpieza y preparación de un terreno.",
    seoDescriptionEn: "What to review before beginning excavation, clearing, and site preparation.",
    published: true,
    sortOrder: 2,
  },
  {
    kind: "post",
    slug: "transporte-de-maquinaria-pesada-sin-demoras",
    category: "transport",
    status: "published",
    titleEs: "Cómo planificar el transporte de maquinaria pesada sin demoras",
    titleEn: "How to Plan Heavy Equipment Transport Without Delays",
    summaryEs: "Información que ayuda a preparar la ruta, la carga, el acceso y la entrega.",
    summaryEn: "Information that helps prepare the route, load, access, and delivery.",
    bodyEs: "Comparte con tiempo el tipo de maquinaria, sus dimensiones, el punto de recogido, el destino y la fecha necesaria. También conviene identificar accesos estrechos, pendientes, horarios y cualquier restricción del lugar.\n\nLa planificación conecta el transporte con el calendario de la obra y reduce el riesgo de que el equipo llegue cuando el frente todavía no está listo.",
    bodyEn: "Share the equipment type, dimensions, pickup point, destination, and needed date early. It also helps to identify narrow access points, slopes, hours, and site restrictions.\n\nPlanning connects transport to the construction schedule and reduces the risk of equipment arriving before the jobsite is ready.",
    imageUrl: image("74214151_465557307649510_297529371189575680_n_1789255010599.jpg"),
    imageAltEs: "Excavadora transportada en una plataforma de carga",
    imageAltEn: "Excavator transported on a heavy haul trailer",
    seoTitleEs: "Planificar transporte de maquinaria pesada",
    seoTitleEn: "Planning heavy equipment transport",
    seoDescriptionEs: "Consejos para coordinar la recogida, ruta, carga y entrega de maquinaria pesada.",
    seoDescriptionEn: "Tips for coordinating pickup, route, loading, and delivery of heavy equipment.",
    published: true,
    sortOrder: 3,
  },
];

const LEGAL_ENTRIES: InsertPublicEntry[] = [
  {
    kind: "legal",
    slug: "privacidad",
    category: "privacy",
    status: "published",
    titleEs: "Aviso de privacidad",
    titleEn: "Privacy Notice",
    summaryEs: "Cómo Y. E. Transport & Constructors recibe, usa y protege información personal.",
    summaryEn: "How Y. E. Transport & Constructors receives, uses, and protects personal information.",
    bodyEs: "Y. E. Transport & Constructors recibe la información que una persona decide enviar mediante formularios de contacto, cotizaciones, citas, solicitudes de empleo o comunicaciones directas. Usamos esos datos para responder solicitudes, coordinar servicios, mantener registros comerciales y cumplir obligaciones legales.\n\nNo vendemos información personal. Compartimos datos únicamente cuando es necesario para prestar un servicio, cumplir una obligación legal, proteger derechos o con proveedores que trabajan bajo instrucciones de la compañía. Conservamos la información durante el tiempo necesario para el propósito correspondiente y aplicamos controles razonables de acceso.\n\nPuedes solicitar acceso, corrección o eliminación de información cuando la ley aplicable lo permita escribiendo al equipo administrativo. Este texto es una base informativa y debe revisarse con asesoría legal para ajustarlo a la jurisdicción y operaciones definitivas de la compañía.",
    bodyEn: "Y. E. Transport & Constructors receives information a person chooses to submit through contact forms, quotes, appointments, job applications, or direct communications. We use it to respond to requests, coordinate services, maintain business records, and meet legal obligations.\n\nWe do not sell personal information. We share data only when needed to provide a service, meet a legal obligation, protect rights, or with vendors working under the company's instructions. We retain information for as long as needed for the relevant purpose and apply reasonable access controls.\n\nYou may request access, correction, or deletion where applicable law allows by contacting the administrative team. This text is an informational starting point and should be reviewed by legal counsel for the company's final jurisdiction and operations.",
    imageUrl: null,
    imageAltEs: "",
    imageAltEn: "",
    gallery: [],
    seoTitleEs: "Aviso de privacidad | Y. E. Transport & Constructors",
    seoTitleEn: "Privacy Notice | Y. E. Transport & Constructors",
    seoDescriptionEs: "Conoce cómo Y. E. Transport & Constructors maneja la información personal y las solicitudes recibidas.",
    seoDescriptionEn: "Learn how Y. E. Transport & Constructors handles personal information and submitted requests.",
    published: true,
    featured: false,
    sortOrder: 1,
  },
  {
    kind: "legal",
    slug: "terminos-de-uso",
    category: "terms",
    status: "published",
    titleEs: "Términos de uso",
    titleEn: "Terms of Use",
    summaryEs: "Reglas generales para usar el sitio y solicitar información comercial.",
    summaryEn: "General rules for using the site and requesting commercial information.",
    bodyEs: "Este sitio ofrece información general sobre servicios, equipos, transporte, materiales, construcción y oportunidades de trabajo. El contenido no constituye una cotización, contrato, garantía de disponibilidad ni consejo profesional.\n\nLas solicitudes enviadas por el sitio están sujetas a revisión, disponibilidad, condiciones del proyecto y acuerdos escritos. No está permitido usar el sitio para enviar información maliciosa, hacerse pasar por otra persona, interferir con la operación o intentar acceder a áreas administrativas.\n\nY. E. Transport & Constructors puede actualizar el contenido, los servicios y estos términos. La fecha de revisión debe mantenerse en la versión publicada. Antes de usar esta página como documento contractual, la compañía debe obtener revisión legal.",
    bodyEn: "This site provides general information about services, equipment, transport, materials, construction, and job opportunities. Content is not a quote, contract, availability guarantee, or professional advice.\n\nRequests submitted through the site are subject to review, availability, project conditions, and written agreements. Users may not send malicious content, impersonate another person, interfere with operations, or attempt to access administrative areas.\n\nY. E. Transport & Constructors may update site content, services, and these terms. The published version should retain its review date. Before using this page as a contractual document, the company should obtain legal review.",
    imageUrl: null,
    imageAltEs: "",
    imageAltEn: "",
    gallery: [],
    seoTitleEs: "Términos de uso del sitio de Y.E.",
    seoTitleEn: "Y.E. website terms of use",
    seoDescriptionEs: "Términos para utilizar el sitio de Y. E. Transport & Constructors y enviar solicitudes.",
    seoDescriptionEn: "Terms for using the Y. E. Transport & Constructors website and submitting requests.",
    published: true,
    featured: false,
    sortOrder: 2,
  },
  {
    kind: "legal",
    slug: "accesibilidad",
    category: "accessibility",
    status: "published",
    titleEs: "Declaración de accesibilidad",
    titleEn: "Accessibility Statement",
    summaryEs: "Compromiso de ofrecer una experiencia digital usable y comprensible.",
    summaryEn: "A commitment to providing a usable and understandable digital experience.",
    bodyEs: "Y. E. Transport & Constructors busca que este sitio sea usable por la mayor cantidad posible de personas. Trabajamos para mantener textos claros, navegación identificable, contraste suficiente, formularios etiquetados y texto alternativo descriptivo para imágenes informativas.\n\nSi encuentras una barrera de acceso, envía la página, el problema y la forma preferida de contacto al equipo administrativo. Revisaremos el reporte y procuraremos ofrecer una alternativa razonable mientras corregimos la experiencia.\n\nEsta declaración debe revisarse periódicamente junto con pruebas de accesibilidad y los requisitos legales aplicables.",
    bodyEn: "Y. E. Transport & Constructors works to make this site usable by as many people as possible. We aim to provide clear text, identifiable navigation, sufficient contrast, labeled forms, and descriptive alternative text for informative images.\n\nIf you encounter an access barrier, send the page, the issue, and your preferred contact method to the administrative team. We will review the report and seek a reasonable alternative while improving the experience.\n\nThis statement should be reviewed periodically alongside accessibility testing and applicable legal requirements.",
    imageUrl: null,
    imageAltEs: "",
    imageAltEn: "",
    gallery: [],
    seoTitleEs: "Accesibilidad digital | Y. E. Transport & Constructors",
    seoTitleEn: "Digital accessibility | Y. E. Transport & Constructors",
    seoDescriptionEs: "Compromiso de Y.E. con una experiencia web accesible, clara y usable.",
    seoDescriptionEn: "Y.E.'s commitment to a clear, usable, and accessible web experience.",
    published: true,
    featured: false,
    sortOrder: 3,
  },
  {
    kind: "legal",
    slug: "seguridad-y-responsabilidad",
    category: "safety",
    status: "published",
    titleEs: "Seguridad y responsabilidad",
    titleEn: "Safety and Responsibility",
    summaryEs: "Información general sobre seguridad en obras, equipos y transporte.",
    summaryEn: "General information about safety around jobsites, equipment, and transport.",
    bodyEs: "La operación de maquinaria, transporte y construcción requiere personal competente, planificación y cumplimiento de las reglas del lugar. Nunca uses una máquina sin autorización, capacitación y equipo de protección apropiado. Mantén distancia de equipos en movimiento y sigue las instrucciones del operador y del responsable del proyecto.\n\nLa información publicada en este sitio no sustituye procedimientos de seguridad, inspecciones, permisos, análisis de riesgos, manuales del fabricante ni requisitos de una autoridad. Cada proyecto debe establecer sus controles específicos antes de comenzar.\n\nEn una emergencia, llama al servicio de emergencias correspondiente y notifica al responsable del lugar.",
    bodyEn: "Operating machinery, transport, and construction work requires competent personnel, planning, and compliance with site rules. Never use a machine without authorization, training, and appropriate protective equipment. Keep clear of moving equipment and follow the operator's and project lead's instructions.\n\nInformation on this site does not replace safety procedures, inspections, permits, risk assessments, manufacturer manuals, or authority requirements. Each project must establish its specific controls before work begins.\n\nIn an emergency, call the applicable emergency service and notify the responsible site contact.",
    imageUrl: null,
    imageAltEs: "",
    imageAltEn: "",
    gallery: [],
    seoTitleEs: "Seguridad en construcción, transporte y maquinaria",
    seoTitleEn: "Construction, transport, and equipment safety",
    seoDescriptionEs: "Información general de seguridad para trabajos de construcción, transporte y uso de maquinaria.",
    seoDescriptionEn: "General safety information for construction, transport, and equipment operations.",
    published: true,
    featured: false,
    sortOrder: 4,
  },
  {
    kind: "legal",
    slug: "cookies",
    category: "cookies",
    status: "published",
    titleEs: "Aviso sobre cookies y analítica",
    titleEn: "Cookies and Analytics Notice",
    summaryEs: "Información sobre tecnologías usadas para mantener y entender el sitio.",
    summaryEn: "Information about technologies used to operate and understand the site.",
    bodyEs: "El sitio puede utilizar almacenamiento local, cookies técnicas o tecnologías similares para recordar preferencias, mantener sesiones administrativas y medir eventos básicos de navegación. Las herramientas opcionales deben activarse únicamente según la configuración aprobada por la compañía y la ley aplicable.\n\nLas cookies necesarias pueden ser indispensables para funciones solicitadas por la persona usuaria. Las preferencias pueden cambiarse desde el navegador cuando la tecnología lo permita. Los proveedores de analítica, si se incorporan, deben documentarse en una versión actualizada de este aviso.\n\nEste aviso es una plantilla inicial y requiere revisión antes de activar proveedores externos de publicidad o analítica.",
    bodyEn: "The site may use local storage, technical cookies, or similar technologies to remember preferences, maintain administrative sessions, and measure basic navigation events. Optional tools should be enabled only under the company's approved configuration and applicable law.\n\nNecessary cookies may be required for requested functionality. Preferences can be changed in the browser when supported. Analytics providers, if added, should be documented in an updated version of this notice.\n\nThis notice is an initial template and requires review before enabling external advertising or analytics providers.",
    imageUrl: null,
    imageAltEs: "",
    imageAltEn: "",
    gallery: [],
    seoTitleEs: "Cookies y analítica | Y. E. Transport & Constructors",
    seoTitleEn: "Cookies and analytics | Y. E. Transport & Constructors",
    seoDescriptionEs: "Cómo el sitio puede usar cookies técnicas, almacenamiento local y analítica.",
    seoDescriptionEn: "How the site may use technical cookies, local storage, and analytics.",
    published: true,
    featured: false,
    sortOrder: 5,
  },
  {
    kind: "legal",
    slug: "descargo-de-responsabilidad",
    category: "disclaimer",
    status: "published",
    titleEs: "Descargo de responsabilidad",
    titleEn: "Disclaimer",
    summaryEs: "Alcance de la información publicada y de las solicitudes recibidas.",
    summaryEn: "Scope of published information and submitted requests.",
    bodyEs: "Las fotografías, descripciones, precios de referencia, capacidades, áreas de servicio y estados mostrados pueden cambiar. Una imagen de un equipo o trabajo no garantiza que el mismo activo esté disponible en una fecha determinada. La disponibilidad, el alcance y las condiciones se confirman por escrito.\n\nLos resultados dependen de las condiciones del sitio, permisos, especificaciones, clima, calendario y otros factores. La información del blog tiene finalidad educativa y no reemplaza una evaluación profesional del proyecto.\n\nEste descargo debe armonizarse con contratos, cotizaciones, pólizas y las leyes aplicables a la compañía.",
    bodyEn: "Photos, descriptions, reference pricing, capabilities, service areas, and statuses may change. An image of equipment or work does not guarantee that the same asset is available on a particular date. Availability, scope, and terms are confirmed in writing.\n\nResults depend on site conditions, permits, specifications, weather, schedule, and other factors. Blog information is educational and does not replace a professional project assessment.\n\nThis disclaimer should be aligned with the company's contracts, quotes, policies, and applicable laws.",
    imageUrl: null,
    imageAltEs: "",
    imageAltEn: "",
    gallery: [],
    seoTitleEs: "Descargo de responsabilidad de Y.E.",
    seoTitleEn: "Y.E. disclaimer",
    seoDescriptionEs: "Alcance y límites de la información publicada por Y. E. Transport & Constructors.",
    seoDescriptionEn: "Scope and limits of information published by Y. E. Transport & Constructors.",
    published: true,
    featured: false,
    sortOrder: 6,
  },
  {
    kind: "legal",
    slug: "dmca",
    category: "dmca",
    status: "published",
    titleEs: "Aviso DMCA y propiedad intelectual",
    titleEn: "DMCA Notice and Intellectual Property",
    summaryEs: "Procedimiento para reportar material protegido por derechos de autor y proteger la propiedad intelectual.",
    summaryEn: "A process for reporting copyrighted material and protecting intellectual property.",
    bodyEs: "Y. E. Transport & Constructors respeta los derechos de autor y espera que las personas usuarias hagan lo mismo. Si consideras que material publicado en este sitio infringe tus derechos de autor, envía un aviso escrito al contacto administrativo designado con información suficiente para identificar la obra protegida, la ubicación exacta del material, tus datos de contacto, una declaración de buena fe y una declaración de que la información suministrada es correcta y que estás autorizado para actuar en nombre del titular.\n\nTambién puedes incluir una firma física o electrónica. Al recibir un aviso completo, la compañía podrá revisar el material, restringir temporalmente su acceso o solicitar información adicional. Los avisos deliberadamente falsos pueden generar responsabilidad conforme a la ley aplicable.\n\nEste aviso es una base informativa y debe completarse con el nombre, correo y dirección del agente designado por la compañía antes de producción. No sustituye asesoría legal.",
    bodyEn: "Y. E. Transport & Constructors respects copyright rights and expects users to do the same. If you believe material published on this site infringes your copyright, send a written notice to the company's designated administrative contact with enough information to identify the copyrighted work, the exact location of the material, your contact details, a good-faith statement, and a statement that the information is accurate and that you are authorized to act for the rights holder.\n\nYou may also include a physical or electronic signature. After receiving a complete notice, the company may review the material, temporarily restrict access, or request additional information. Deliberately false notices may create liability under applicable law.\n\nThis notice is an informational starting point and must be completed with the company's designated agent name, email, and address before production. It does not replace legal advice.",
    imageUrl: null,
    imageAltEs: "",
    imageAltEn: "",
    gallery: [],
    seoTitleEs: "Aviso DMCA y propiedad intelectual | Y. E. Transport",
    seoTitleEn: "DMCA notice and intellectual property | Y. E. Transport",
    seoDescriptionEs: "Procedimiento inicial de Y. E. Transport para reportar infracciones de derechos de autor.",
    seoDescriptionEn: "Y. E. Transport's initial process for reporting copyright infringement.",
    published: true,
    featured: false,
    sortOrder: 7,
  },
];

let seedPromise: Promise<void> | null = null;

export function ensurePublicEntries() {
  if (!seedPromise) {
    seedPromise = (async () => {
      const allEntries = [...DEFAULT_PUBLIC_ENTRIES, ...LEGAL_ENTRIES];
      const existingEntries = await db.select({ slug: yePublicEntriesTable.slug }).from(yePublicEntriesTable);
      const existingSlugs = new Set(existingEntries.map((entry) => entry.slug));
      const missingEntries = allEntries.filter((entry) => !existingSlugs.has(entry.slug));
      if (missingEntries.length > 0) {
        await db.insert(yePublicEntriesTable).values(missingEntries);
      }
    })().catch((error) => {
      seedPromise = null;
      throw error;
    });
  }
  return seedPromise;
}