Make a function to get all website settings
This commit is contained in:
133
astro/src/content/settings/settings.ts
Normal file
133
astro/src/content/settings/settings.ts
Normal file
@@ -0,0 +1,133 @@
|
||||
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"]
|
||||
}
|
||||
};
|
||||
|
||||
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"]
|
||||
};
|
||||
|
||||
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
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user