170 lines
7.2 KiB
TypeScript
170 lines
7.2 KiB
TypeScript
import { print } from 'graphql';
|
|
import { createDirectusConnection } from "@/lib/directus";
|
|
import getSettingsQuery from '@/graphql/settings/settings.graphql';
|
|
|
|
export async function getSettings(): Promise<GlobalSettings> {
|
|
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"]
|
|
},
|
|
lastModified: websiteResults["date_updated"] !== null ?
|
|
new Date(websiteResults["date_updated"]) :
|
|
new Date(websiteResults["date_created"])
|
|
};
|
|
|
|
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"],
|
|
lastModified: projectResults["date_updated"] !== null ?
|
|
new Date(projectResults["date_updated"]) :
|
|
new Date(projectResults["date_created"])
|
|
};
|
|
|
|
const photoResults = result["Photo_Settings"];
|
|
let photoResultsLastModifiedTimestamps: string[] = [
|
|
photoResults["date_created"],
|
|
photoResults["date_updated"],
|
|
photoResults["category_icons"]["date_created"],
|
|
photoResults["category_icons"]["date_updated"],
|
|
photoResults["category_icons"]["photos_icon"]["created_on"],
|
|
photoResults["category_icons"]["location_icon"]["created_on"],
|
|
photoResults["category_icons"]["date_icon"]["created_on"],
|
|
photoResults["photo_icons"]["date_created"],
|
|
photoResults["photo_icons"]["date_updated"],
|
|
photoResults["photo_icons"]["previous_icon"]["created_on"],
|
|
photoResults["photo_icons"]["next_icon"]["created_on"],
|
|
photoResults["photo_icons"]["close_icon"]["created_on"],
|
|
photoResults["photo_icons"]["download_icon"]["created_on"]
|
|
];
|
|
|
|
const photoResultsLastModified = photoResultsLastModifiedTimestamps.sort((a: string, b: string) => {
|
|
return new Date(b).getTime() - new Date(a).getTime();
|
|
});
|
|
|
|
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"]
|
|
}
|
|
}
|
|
},
|
|
lastModified: new Date(photoResultsLastModified[0])
|
|
};
|
|
|
|
const sitemapResults = result["Sitemap_Settings"];
|
|
const sitemapSettings: SitemapSettings = {
|
|
perPage: sitemapResults["per_page"],
|
|
lastModified: sitemapResults["date_updated"] !== null ?
|
|
new Date(sitemapResults["date_updated"]) :
|
|
new Date(sitemapResults["date_created"])
|
|
};
|
|
|
|
const pluginResults = result["Plugin_Settings"];
|
|
const pluginSettings: PluginSettings = {
|
|
swetrix: {
|
|
id: pluginResults["swetrix_id"],
|
|
url: pluginResults["swetrix_url"]
|
|
},
|
|
lastModified: pluginResults["date_updated"] !== null ?
|
|
new Date(pluginResults["date_updated"]) :
|
|
new Date(pluginResults["date_created"])
|
|
}
|
|
|
|
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
|
|
}
|
|
}
|