import { print } from 'graphql'; import { createDirectusConnection } from "@/lib/directus"; import getSettingsQuery from '@/graphql/settings/settings.graphql'; export async function getSettings(): Promise { const client = await createDirectusConnection(); const result = await client.query(print(getSettingsQuery)); const websiteResults = result["Website_Settings"]; const websiteSettings: WebsiteSettings = { domainName: websiteResults["domain_name"], titleTemplate: websiteResults["title_template"], applicationName: websiteResults["application_name"], colors: { primary: websiteResults["primary_color"], secondary: websiteResults["secondary_color"] }, author: { name: websiteResults["author_name"], url: websiteResults["author_url"] }, owner: websiteResults["owner"], designer: websiteResults["designer"], developer: websiteResults["developer"], copyright: websiteResults["copyright"], twitter: { id: websiteResults["twitter_id"], handle: websiteResults["twitter_handle"] } }; const blogResults = result["Blog_Settings"]; const blogSettings: BlogSettings = { enabled: blogResults["enabled"], title: blogResults["title"], subtext: blogResults["subtext"], indexRouteTemplate: blogResults["index_route_template"], blogRouteTemplate: blogResults["blog_route_template"], lastModified: blogResults["date_updated"] !== null ? new Date(blogResults["date_updated"]) : new Date(blogResults["date_created"]) }; const projectResults = result["Project_Settings"]; const projectSettings: ProjectSettings = { enabled: projectResults["enabled"], title: projectResults["title"], subtext: projectResults["subtext"], indexRouteTemplate: projectResults["index_route_template"], projectRouteTemplate: projectResults["project_route_template"] }; const photoResults = result["Photo_Settings"]; const photoSettings: WebsitePhotoSettings = { enabled: photoResults["enabled"], categoryIndex: { indexRouteTemplate: photoResults["categories_index_route_template_url"] }, category: { routeTemplate: photoResults["category_route_template_url"], perPage: photoResults["albums_per_category_page"], icons: { photos: { url: photoResults["category_icons"]["photos_icon"]["filename_download"], height: photoResults["category_icons"]["photos_icon"]["height"], width: photoResults["category_icons"]["photos_icon"]["width"] }, location: { url: photoResults["category_icons"]["location_icon"]["filename_download"], height: photoResults["category_icons"]["location_icon"]["height"], width: photoResults["category_icons"]["location_icon"]["width"] }, date: { url: photoResults["category_icons"]["date_icon"]["filename_download"], height: photoResults["category_icons"]["date_icon"]["height"], width: photoResults["category_icons"]["date_icon"]["width"] } } }, album: { routeTemplate: photoResults["album_route_template_url"], perPage: photoResults["photos_per_album_page"] }, photo: { routeTemplate: photoResults["photo_route_template_url"], icons: { previous: { url: photoResults["photo_icons"]["previous_icon"]["filename_download"], height: photoResults["photo_icons"]["previous_icon"]["height"], width: photoResults["photo_icons"]["previous_icon"]["width"] }, next: { url: photoResults["photo_icons"]["next_icon"]["filename_download"], height: photoResults["photo_icons"]["next_icon"]["height"], width: photoResults["photo_icons"]["next_icon"]["width"] }, close: { url: photoResults["photo_icons"]["close_icon"]["filename_download"], height: photoResults["photo_icons"]["close_icon"]["height"], width: photoResults["photo_icons"]["close_icon"]["width"] }, download: { url: photoResults["photo_icons"]["download_icon"]["filename_download"], height: photoResults["photo_icons"]["download_icon"]["height"], width: photoResults["photo_icons"]["download_icon"]["width"] } } } }; const sitemapResults = result["Sitemap_Settings"]; const sitemapSettings: SitemapSettings = { perPage: sitemapResults["per_page"] }; const pluginResults = result["Plugin_Settings"]; const pluginSettings: PluginSettings = { swetrix: { id: pluginResults["swetrix_id"], url: pluginResults["swetrix_url"] } } if (pluginResults["swetrix_id"] === null && pluginResults["swetrix_url"] === null) { pluginSettings.swetrix = null; } return { website: websiteSettings, blog: blogSettings, project: projectSettings, photo: photoSettings, sitemap: sitemapSettings, plugins: pluginSettings } }