'use server' import sql from '@/lib/db'; export async function getSettings() { try { const settings = await sql`SELECT * FROM settings WHERE id = 1 LIMIT 1`; return settings[0] || null; } catch (error) { console.error('Error fetching settings:', error); return null; } } export async function getFeaturedServices() { try { const services = await sql`SELECT * FROM services WHERE is_featured = true ORDER BY display_order ASC LIMIT 4`; return services; } catch (error) { console.error('Error fetching services:', error); return []; } } export async function getFeaturedProjects() { try { const projects = await sql`SELECT * FROM projects WHERE is_featured = true ORDER BY created_at DESC LIMIT 6`; return projects; } catch (error) { console.error('Error fetching projects:', error); return []; } } export async function submitLead(formData: { firstName: string; lastName: string; email: string; projectType: string; message: string; }) { try { const fullName = `${formData.firstName} ${formData.lastName}`; await sql` INSERT INTO leads (full_name, email, service_type, message, status) VALUES (${fullName}, ${formData.email}, ${formData.projectType}, ${formData.message}, 'new') `; return { success: true }; } catch (error) { console.error('Error submitting lead:', error); return { error: 'Failed to submit' }; } } export async function getPartners() { try { return await sql` SELECT p.*, ( SELECT slug FROM projects WHERE LOWER(TRIM(p.name)) LIKE '%' || LOWER(TRIM(title)) || '%' OR LOWER(TRIM(title)) LIKE '%' || LOWER(TRIM(p.name)) || '%' LIMIT 1 ) as project_slug FROM partners p ORDER BY p.display_order ASC `; } catch (error) { console.error('Error fetching partners:', error); return []; } } export async function getProjectBySlug(slug: string) { try { const projects = await sql`SELECT * FROM projects WHERE slug = ${slug} LIMIT 1`; if (projects.length === 0) return null; const project = projects[0]; // Fetch next project for the bottom section const nextProjects = await sql` SELECT * FROM projects WHERE created_at < ${project.created_at} ORDER BY created_at DESC LIMIT 1 `; // If no older project, fetch the newest one let nextProject: any = nextProjects[0] || null; if (!nextProject) { const newest = await sql`SELECT * FROM projects ORDER BY created_at DESC LIMIT 1`; nextProject = newest[0] !== project ? newest[0] : null; } return { project, nextProject }; } catch (error) { console.error('Error fetching project:', error); return null; } }