feat(F-048): completed feature
This commit is contained in:
@@ -1,57 +1,96 @@
|
||||
// migration: 025_cms_footer_pages
|
||||
// Seeds initial CMS pages for footer links if they don't exist yet
|
||||
|
||||
/** @param {import('pg').Pool} pool */
|
||||
exports.up = async (pool) => {
|
||||
const pages = [
|
||||
{
|
||||
slug: 'about',
|
||||
title: 'Quiénes somos',
|
||||
body: '<h2>Nuestra historia</h2><p>MercadoDeVida nació de la convicción de que comer bien no debería ser complicado.</p><h2>Nuestra misión</h2><p>Facilitar el acceso a productos naturales y orgánicos de alta calidad.</p>',
|
||||
status: 'published',
|
||||
},
|
||||
{
|
||||
slug: 'contact',
|
||||
title: 'Contacto',
|
||||
body: '<h2>Email</h2><p><a href="mailto:hola@mercadodevida.es">hola@mercadodevida.es</a></p><p>Intentamos responder en 24-48h laborables.</p>',
|
||||
status: 'published',
|
||||
},
|
||||
{
|
||||
slug: 'shipping',
|
||||
title: 'Envíos y entregas',
|
||||
body: '<h2>Zonas de envío</h2><p>España peninsular. Canarias, Ceuta y Melilla: contacta con nosotros.</p><h2>Envío estándar (3-5 días)</h2><p>Coste según peso. Gratis a partir de un umbral.</p><h2>Envío express 24h</h2><p>Disponible para pedidos antes de las 13:00h.</p>',
|
||||
status: 'published',
|
||||
},
|
||||
{
|
||||
slug: 'privacy',
|
||||
title: 'Política de privacidad',
|
||||
body: '<h2>Responsable del tratamiento</h2><p>MercadoDeVida. hola@mercadodevida.es</p><h2>Finalidad</h2><p>Gestión de pedidos, atención al cliente y envío de comunicaciones comerciales.</p><h2>Tus derechos</h2><p>Acceso, rectificación, supresión y portabilidad de tus datos. Contacta: hola@mercadodevida.es</p>',
|
||||
status: 'published',
|
||||
},
|
||||
{
|
||||
slug: 'terms',
|
||||
title: 'Términos y condiciones',
|
||||
body: '<h2>Contratación</h2><p>Al realizar un pedido aceptas estos términos. Los precios incluyen IVA.</p><h2>Envíos</h2><p>Ver sección de envíos.</p><h2>Devoluciones</h2><p>Tienes 14 días para devolver productos no perecederos en su estado original.</p>',
|
||||
status: 'published',
|
||||
},
|
||||
{
|
||||
slug: 'cookies',
|
||||
title: 'Política de cookies',
|
||||
body: '<h2>¿Qué son las cookies?</h2><p>Pequños archivos que se almacenan en tu navegador para mejorar tu experiencia.</p><h2>Cookies que usamos</h2><p>Cookies de sesión (carrito, login), cookies analíticas (opcionales) y cookies de preferencias.</p><h2>Tu consentimiento</h2><p>Al navegar aceptas el uso de cookies. Puedes desactivarlas en tu navegador.</p>',
|
||||
status: 'published',
|
||||
},
|
||||
];
|
||||
/** @param {import('node-pg-migrate').MigrationBuilder} pgm */
|
||||
exports.up = (pgm) => {
|
||||
// About page
|
||||
pgm.sql(`
|
||||
INSERT INTO cms_pages (slug, title, body, status, created_at, updated_at)
|
||||
VALUES (
|
||||
'about',
|
||||
'Quiénes somos',
|
||||
'<h2>Nuestra historia</h2><p>MercadoDeVida nació de la convicción de que comer bien no debería ser complicado.</p><h2>Nuestra misión</h2><p>Facilitar el acceso a productos naturales y orgánicos de alta calidad.</p>',
|
||||
'published',
|
||||
NOW(),
|
||||
NOW()
|
||||
)
|
||||
ON CONFLICT (slug) DO NOTHING
|
||||
`);
|
||||
|
||||
for (const p of pages) {
|
||||
await pool.query(
|
||||
`INSERT INTO cms_pages (slug, title, body, status, created_at, updated_at)
|
||||
VALUES ($1, $2, $3, $4, NOW(), NOW())
|
||||
ON CONFLICT (slug) DO NOTHING`,
|
||||
[p.slug, p.title, p.body, p.status],
|
||||
);
|
||||
}
|
||||
// Contact page
|
||||
pgm.sql(`
|
||||
INSERT INTO cms_pages (slug, title, body, status, created_at, updated_at)
|
||||
VALUES (
|
||||
'contact',
|
||||
'Contacto',
|
||||
'<h2>Email</h2><p><a href="mailto:hola@mercadodevida.es">hola@mercadodevida.es</a></p><p>Intentamos responder en 24-48h laborables.</p>',
|
||||
'published',
|
||||
NOW(),
|
||||
NOW()
|
||||
)
|
||||
ON CONFLICT (slug) DO NOTHING
|
||||
`);
|
||||
|
||||
// Shipping page
|
||||
pgm.sql(`
|
||||
INSERT INTO cms_pages (slug, title, body, status, created_at, updated_at)
|
||||
VALUES (
|
||||
'shipping',
|
||||
'Envíos y entregas',
|
||||
'<h2>Zonas de envío</h2><p>España peninsular. Canarias, Ceuta y Melilla: contacta con nosotros.</p><h2>Envío estándar (3-5 días)</h2><p>Coste según peso. Gratis a partir de un umbral.</p><h2>Envío express 24h</h2><p>Disponible para pedidos antes de las 13:00h.</p>',
|
||||
'published',
|
||||
NOW(),
|
||||
NOW()
|
||||
)
|
||||
ON CONFLICT (slug) DO NOTHING
|
||||
`);
|
||||
|
||||
// Privacy page
|
||||
pgm.sql(`
|
||||
INSERT INTO cms_pages (slug, title, body, status, created_at, updated_at)
|
||||
VALUES (
|
||||
'privacy',
|
||||
'Política de privacidad',
|
||||
'<h2>Responsable del tratamiento</h2><p>MercadoDeVida. hola@mercadodevida.es</p><h2>Finalidad</h2><p>Gestión de pedidos, atención al cliente y envío de comunicaciones comerciales.</p><h2>Tus derechos</h2><p>Acceso, rectificación, supresión y portabilidad de tus datos. Contacta: hola@mercadodevida.es</p>',
|
||||
'published',
|
||||
NOW(),
|
||||
NOW()
|
||||
)
|
||||
ON CONFLICT (slug) DO NOTHING
|
||||
`);
|
||||
|
||||
// Terms page
|
||||
pgm.sql(`
|
||||
INSERT INTO cms_pages (slug, title, body, status, created_at, updated_at)
|
||||
VALUES (
|
||||
'terms',
|
||||
'Términos y condiciones',
|
||||
'<h2>Contratación</h2><p>Al realizar un pedido aceptas estos términos. Los precios incluyen IVA.</p><h2>Envíos</h2><p>Ver sección de envíos.</p><h2>Devoluciones</h2><p>Tienes 14 días para devolver productos no perecederos en su estado original.</p>',
|
||||
'published',
|
||||
NOW(),
|
||||
NOW()
|
||||
)
|
||||
ON CONFLICT (slug) DO NOTHING
|
||||
`);
|
||||
|
||||
// Cookies page
|
||||
pgm.sql(`
|
||||
INSERT INTO cms_pages (slug, title, body, status, created_at, updated_at)
|
||||
VALUES (
|
||||
'cookies',
|
||||
'Política de cookies',
|
||||
'<h2>¿Qué son las cookies?</h2><p>Pequños archivos que se almacenan en tu navegador para mejorar tu experiencia.</p><h2>Cookies que usamos</h2><p>Cookies de sesión (carrito, login), cookies analíticas (opcionales) y cookies de preferencias.</p><h2>Tu consentimiento</h2><p>Al navegar aceptas el uso de cookies. Puedes desactivarlas en tu navegador.</p>',
|
||||
'published',
|
||||
NOW(),
|
||||
NOW()
|
||||
)
|
||||
ON CONFLICT (slug) DO NOTHING
|
||||
`);
|
||||
};
|
||||
|
||||
exports.down = async (pool) => {
|
||||
await pool.query(`DELETE FROM cms_pages WHERE slug IN ('about','contact','shipping','privacy','terms','cookies')`);
|
||||
/** @param {import('node-pg-migrate').MigrationBuilder} pgm */
|
||||
exports.down = (pgm) => {
|
||||
pgm.sql(
|
||||
`DELETE FROM cms_pages WHERE slug IN ('about','contact','shipping','privacy','terms','cookies')`,
|
||||
);
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user