{"version":3,"file":"index.cjs","sources":["../../src/generator/index.ts"],"sourcesContent":["import type { PrismaClient } from '@prisma/client';\nimport type { LandingPageTemplate } from '../schemas/types';\nimport { validateTemplate } from '../schemas/validators';\n\n/**\n * Generador de Landing Page Templates para Prisma\n *\n * Esta función crea o actualiza un template en la base de datos\n * con validación estricta del tipado del schema.\n *\n * @param template - Template a crear/actualizar\n * @param prisma - Instancia de PrismaClient\n * @returns El template creado/actualizado\n *\n * @example\n * ```ts\n * import { PrismaClient } from '@prisma/client';\n * import { createLandingPageTemplate, menuTemplate } from '@imperiohub/lp-templates/generator';\n *\n * const prisma = new PrismaClient();\n *\n * const template = await createLandingPageTemplate(menuTemplate, prisma);\n * ```\n */\nexport async function createLandingPageTemplate(\n  template: LandingPageTemplate,\n  prisma: PrismaClient\n) {\n  console.log(`🔍 Validando template: ${template.name}...`);\n\n  // Validar el template antes de insertarlo\n  try {\n    validateTemplate(template);\n  } catch (error) {\n    console.error(\n      `❌ Error de validación en template \"${template.name}\":`,\n      error\n    );\n    throw error;\n  }\n\n  console.log(`✅ Validación exitosa para: ${template.name}`);\n  console.log(`💾 Insertando template en la base de datos...`);\n\n  try {\n    const createdTemplate = await prisma.landingPageTemplate.upsert({\n      where: { slug: template.slug },\n      update: {\n        name: template.name,\n        schema: template.schema as any, // Prisma maneja JSON\n      },\n      create: {\n        name: template.name,\n        slug: template.slug,\n        schema: template.schema as any, // Prisma maneja JSON\n      },\n    });\n\n    console.log(\n      `✅ Template \"${template.name}\" creado/actualizado exitosamente`\n    );\n    console.log(`   ID: ${createdTemplate.id}`);\n    console.log(`   Slug: ${createdTemplate.slug}`);\n    console.log(`   Campos: ${template.schema.fields.length}`);\n    console.log('');\n\n    return createdTemplate;\n  } catch (error) {\n    console.error(`❌ Error al insertar template \"${template.name}\":`, error);\n    throw error;\n  }\n}\n\n/**\n * Inicializa múltiples templates de una vez\n *\n * @param templates - Array de templates a crear\n * @param prisma - Instancia de PrismaClient\n *\n * @example\n * ```ts\n * import { PrismaClient } from '@prisma/client';\n * import { initializeTemplates, allTemplates } from '@imperiohub/lp-templates/generator';\n *\n * const prisma = new PrismaClient();\n *\n * // En seeds/templates.ts\n * await initializeTemplates(allTemplates, prisma);\n * ```\n */\nexport async function initializeTemplates(\n  templates: LandingPageTemplate[],\n  prisma: PrismaClient\n): Promise<void> {\n  console.log(\n    `\\n📋 Iniciando inserción de ${templates.length} template(s)...\\n`\n  );\n\n  let successCount = 0;\n  let errorCount = 0;\n\n  for (const template of templates) {\n    try {\n      await createLandingPageTemplate(template, prisma);\n      successCount++;\n    } catch (error) {\n      errorCount++;\n      console.error(`❌ Falló la inserción del template \"${template.name}\"\\n`);\n    }\n  }\n\n  console.log('━'.repeat(60));\n  console.log(`✅ Templates insertados exitosamente: ${successCount}`);\n  if (errorCount > 0) {\n    console.log(`❌ Templates con errores: ${errorCount}`);\n  }\n  console.log('━'.repeat(60));\n  console.log('');\n}\n"],"names":["createLandingPageTemplate","template","prisma","validateTemplate","error","createdTemplate","initializeTemplates","templates","successCount","errorCount"],"mappings":"yHAwBA,eAAsBA,EACpBC,EACAC,EACA,CACA,QAAQ,IAAI,0BAA0BD,EAAS,IAAI,KAAK,EAGxD,GAAI,CACFE,EAAAA,iBAAiBF,CAAQ,CAC3B,OAASG,EAAO,CACd,cAAQ,MACN,sCAAsCH,EAAS,IAAI,KACnDG,CAAA,EAEIA,CACR,CAEA,QAAQ,IAAI,8BAA8BH,EAAS,IAAI,EAAE,EACzD,QAAQ,IAAI,+CAA+C,EAE3D,GAAI,CACF,MAAMI,EAAkB,MAAMH,EAAO,oBAAoB,OAAO,CAC9D,MAAO,CAAE,KAAMD,EAAS,IAAA,EACxB,OAAQ,CACN,KAAMA,EAAS,KACf,OAAQA,EAAS,MAAA,EAEnB,OAAQ,CACN,KAAMA,EAAS,KACf,KAAMA,EAAS,KACf,OAAQA,EAAS,MAAA,CACnB,CACD,EAED,eAAQ,IACN,eAAeA,EAAS,IAAI,mCAAA,EAE9B,QAAQ,IAAI,UAAUI,EAAgB,EAAE,EAAE,EAC1C,QAAQ,IAAI,YAAYA,EAAgB,IAAI,EAAE,EAC9C,QAAQ,IAAI,cAAcJ,EAAS,OAAO,OAAO,MAAM,EAAE,EACzD,QAAQ,IAAI,EAAE,EAEPI,CACT,OAASD,EAAO,CACd,cAAQ,MAAM,iCAAiCH,EAAS,IAAI,KAAMG,CAAK,EACjEA,CACR,CACF,CAmBA,eAAsBE,EACpBC,EACAL,EACe,CACf,QAAQ,IACN;AAAA,4BAA+BK,EAAU,MAAM;AAAA,CAAA,EAGjD,IAAIC,EAAe,EACfC,EAAa,EAEjB,UAAWR,KAAYM,EACrB,GAAI,CACF,MAAMP,EAA0BC,EAAUC,CAAM,EAChDM,GACF,MAAgB,CACdC,IACA,QAAQ,MAAM,sCAAsCR,EAAS,IAAI;AAAA,CAAK,CACxE,CAGF,QAAQ,IAAI,IAAI,OAAO,EAAE,CAAC,EAC1B,QAAQ,IAAI,wCAAwCO,CAAY,EAAE,EAC9DC,EAAa,GACf,QAAQ,IAAI,4BAA4BA,CAAU,EAAE,EAEtD,QAAQ,IAAI,IAAI,OAAO,EAAE,CAAC,EAC1B,QAAQ,IAAI,EAAE,CAChB"}