Initial commit
This commit is contained in:
@@ -0,0 +1,60 @@
|
||||
import { homepageContent } from '$lib/content/homepage';
|
||||
import type { HomePageContent, SiteSharedContent } from '$lib/types';
|
||||
import { getPool } from '$lib/server/db';
|
||||
|
||||
const CONTENT_KEY = 'homepage';
|
||||
|
||||
export async function getHomepageContent(): Promise<HomePageContent> {
|
||||
const pool = getPool();
|
||||
|
||||
if (!pool) {
|
||||
return structuredClone(homepageContent);
|
||||
}
|
||||
|
||||
try {
|
||||
const result = await pool.query<{ value: HomePageContent }>(
|
||||
'select value from site_content where key = $1 limit 1',
|
||||
[CONTENT_KEY]
|
||||
);
|
||||
|
||||
if (result.rowCount && result.rows[0]) {
|
||||
return result.rows[0].value;
|
||||
}
|
||||
} catch (error) {
|
||||
console.error('Failed to read homepage content from PostgreSQL.', error);
|
||||
}
|
||||
|
||||
return structuredClone(homepageContent);
|
||||
}
|
||||
|
||||
export async function saveHomepageContent(content: HomePageContent) {
|
||||
const pool = getPool();
|
||||
|
||||
if (!pool) {
|
||||
throw new Error('DATABASE_URL is not configured.');
|
||||
}
|
||||
|
||||
await pool.query(
|
||||
`
|
||||
insert into site_content (key, value)
|
||||
values ($1, $2::jsonb)
|
||||
on conflict (key)
|
||||
do update set value = excluded.value, updated_at = now()
|
||||
`,
|
||||
[CONTENT_KEY, JSON.stringify(content)]
|
||||
);
|
||||
|
||||
return content;
|
||||
}
|
||||
|
||||
export async function getSharedPageContent(): Promise<SiteSharedContent> {
|
||||
const content = await getHomepageContent();
|
||||
|
||||
return {
|
||||
navigation: content.navigation,
|
||||
services: content.services,
|
||||
testimonials: content.testimonials,
|
||||
booking: content.booking,
|
||||
footer: content.footer
|
||||
};
|
||||
}
|
||||
Reference in New Issue
Block a user