Prepare menu for website
This commit is contained in:
39
astro/src/content/menu/menu.ts
Normal file
39
astro/src/content/menu/menu.ts
Normal file
@@ -0,0 +1,39 @@
|
||||
import { createDirectusConnection } from "@/lib/directus";
|
||||
import { print } from "graphql";
|
||||
import getMenuQuery from "@/graphql/menu/getMenu.graphql";
|
||||
|
||||
export async function getMenu(): Promise<Menu> {
|
||||
const client = await createDirectusConnection();
|
||||
const result = await client.query(print(getMenuQuery));
|
||||
|
||||
const menuRecord = result['Menu'];
|
||||
|
||||
let menu: Menu = {
|
||||
id: menuRecord['id'],
|
||||
items: []
|
||||
};
|
||||
|
||||
menuRecord['items'].forEach((menuItem: any) => {
|
||||
if (menuItem['collection'] === "Menu_Column") {
|
||||
let menuColumnItem: MenuColumn = {
|
||||
id: menuItem['item']['id'],
|
||||
type: "Column",
|
||||
title: menuItem['item']['title'],
|
||||
links: []
|
||||
};
|
||||
|
||||
menuItem['item']['links'].forEach((menuItemLink: any) => {
|
||||
menuColumnItem.links.push({
|
||||
id: menuItemLink['id'],
|
||||
type: "Link",
|
||||
text: menuItemLink['text'],
|
||||
url: menuItemLink['url']
|
||||
});
|
||||
});
|
||||
|
||||
menu.items.push(menuColumnItem);
|
||||
}
|
||||
});
|
||||
|
||||
return menu;
|
||||
}
|
||||
Reference in New Issue
Block a user