import fs from 'fs/promises'; import path from 'path'; import { Portal, Card } from '@/types'; const DATA_DIR = path.join(process.cwd(), 'data'); const PORTALS_FILE = path.join(DATA_DIR, 'portals.txt'); const CARDS_FILE = path.join(DATA_DIR, 'cards.txt'); // Helper to ensure files exist async function ensureDb() { try { await fs.access(DATA_DIR); } catch { await fs.mkdir(DATA_DIR); } try { await fs.access(PORTALS_FILE); } catch { await fs.writeFile(PORTALS_FILE, '[]'); } try { await fs.access(CARDS_FILE); } catch { await fs.writeFile(CARDS_FILE, '[]'); } } export async function getPortals(): Promise { await ensureDb(); const data = await fs.readFile(PORTALS_FILE, 'utf-8'); return JSON.parse(data || '[]'); } export async function getCards(portalId?: string): Promise { await ensureDb(); const data = await fs.readFile(CARDS_FILE, 'utf-8'); let cards: Card[] = JSON.parse(data || '[]'); if (portalId) { cards = cards.filter(c => c.portalId === portalId); } // ALWAYS sort, regardless of whether portalId was passed return cards.sort((a, b) => a.displayOrder - b.displayOrder); } export async function saveCards(cards: Card[]): Promise { await ensureDb(); await fs.writeFile(CARDS_FILE, JSON.stringify(cards, null, 2)); } // Seed function for "Casa della scuola" export async function seedDatabase() { const portalId = 'uuid-casa-della-scuola'; const portals: Portal[] = [{ id: portalId, tenantId: 'casa-della-scuola', title: 'Benvenuti alla Casa della Scuola', welcomeText: 'Discover the rich history and beautiful landscapes of our heritage.', heroImageUrl: '/hero-bg.jpg', logoUrl: '/logo.png', themeColor: '#1e3a8a' }]; const cards: Card[] = [ { id: 'uuid-card-1', portalId, title: 'History before the war', imageUrl: '/history.jpg', shortDescription: 'Explore the origins.', fullContent: '

Long text about the history...

', cardType: 'INFO_PAGE', displayOrder: 1 }, { id: 'uuid-card-2', portalId, title: 'Pettinicchio Biography', imageUrl: '/pettinicchio.jpg', shortDescription: 'Life and legacy.', fullContent: '

Biography details...

', cardType: 'INFO_PAGE', displayOrder: 2 }, { id: 'uuid-card-3', portalId, title: 'Campobasso Landscapes', imageUrl: '/campobasso.jpg', shortDescription: 'Scenic views of the region.', fullContent: '', cardType: 'IMAGE_GALLERY', displayOrder: 3 } ]; await fs.writeFile(PORTALS_FILE, JSON.stringify(portals, null, 2)); await fs.writeFile(CARDS_FILE, JSON.stringify(cards, null, 2)); } export async function savePortals(portals: Portal[]): Promise { const fs = require('fs/promises'); const path = require('path'); const PORTALS_FILE = path.join(process.cwd(), 'data', 'portals.txt'); await fs.writeFile(PORTALS_FILE, JSON.stringify(portals, null, 2)); }