106 lines
3.0 KiB
TypeScript
106 lines
3.0 KiB
TypeScript
import { error } from '@sveltejs/kit'
|
|
import type { PageServerLoad } from './$types'
|
|
import { fetchAPI } from '$utils/api'
|
|
import { PUBLIC_PREVIEW_COUNT } from '$env/static/public'
|
|
|
|
|
|
export const load: PageServerLoad = async ({ setHeaders }) => {
|
|
try {
|
|
const res = await fetchAPI(`query {
|
|
locations: location (filter: { status: { _eq: "published" }}) {
|
|
id
|
|
name
|
|
slug
|
|
coordinates
|
|
country {
|
|
name
|
|
slug
|
|
flag { id }
|
|
continent { slug }
|
|
}
|
|
date_updated
|
|
photos (
|
|
sort: "-date_created",
|
|
limit: ${PUBLIC_PREVIEW_COUNT}
|
|
) {
|
|
image {
|
|
id
|
|
title
|
|
}
|
|
date_created
|
|
}
|
|
has_poster
|
|
globe_close
|
|
}
|
|
|
|
countries: country (filter: { status: { _eq: "published" }}) {
|
|
id
|
|
name
|
|
slug
|
|
flag { id }
|
|
locations { id slug }
|
|
}
|
|
|
|
continents: continent (filter: { countries: { slug: { _neq: "_empty" }}}) {
|
|
name
|
|
slug
|
|
rotation
|
|
}
|
|
|
|
settings {
|
|
seo_name
|
|
seo_title
|
|
seo_description
|
|
seo_image { id }
|
|
description
|
|
explore_list
|
|
limit_new
|
|
instagram
|
|
footer_links
|
|
switcher_links
|
|
newsletter_subtitle
|
|
newsletter_text
|
|
}
|
|
|
|
shop {
|
|
enabled
|
|
module_title
|
|
module_text
|
|
module_images {
|
|
directus_files_id {
|
|
id
|
|
title
|
|
}
|
|
}
|
|
}
|
|
|
|
# Count
|
|
countPhotos: photo_aggregated (filter: { status: { _eq: "published" }}) {
|
|
count { id }
|
|
}
|
|
countLocations: location_aggregated (filter: { status: { _eq: "published" }}) {
|
|
count { id }
|
|
}
|
|
countCountries: country_aggregated (filter: { status: { _eq: "published" }}) {
|
|
count { id }
|
|
}
|
|
}`)
|
|
|
|
if (res) {
|
|
setHeaders({ 'Cache-Control': 'public, max-age=1, stale-while-revalidate=59' })
|
|
|
|
const { data: { countPhotos, countLocations, countCountries, ...rest }} = res
|
|
|
|
return {
|
|
...rest,
|
|
count: {
|
|
photos: countPhotos[0].count.id,
|
|
locations: countLocations[0].count.id,
|
|
countries: countCountries[0].count.id,
|
|
},
|
|
}
|
|
}
|
|
} catch (err) {
|
|
throw error(500, err || 'Failed to fetch data')
|
|
}
|
|
} |