142 lines
3.6 KiB
TypeScript
142 lines
3.6 KiB
TypeScript
import { defineCollection } from "astro:content";
|
|
|
|
import type { Ekintza } from "./models/Ekintza";
|
|
import type { Zikloa } from "./models/Zikloa";
|
|
import type { OrriBasikoa } from "models/OrriBasikoa";
|
|
|
|
const ekintzak = defineCollection({
|
|
loader: async () => {
|
|
const response = await fetch(`${import.meta.env.STRAPI_URL}/graphql`, {
|
|
method: "POST",
|
|
headers: { "Content-Type": "application/json" },
|
|
body: JSON.stringify({
|
|
query: `
|
|
query {
|
|
ekintzak(pagination: { limit: -1 }) {
|
|
id: documentId
|
|
createdAt
|
|
slug
|
|
elkarlana {
|
|
label
|
|
erakundeak {
|
|
izena
|
|
logo {
|
|
formats
|
|
}
|
|
esteka
|
|
}
|
|
}
|
|
hitzordua
|
|
deskribapena
|
|
izenburua
|
|
labakoUzta
|
|
mainMedia {
|
|
alternativeText
|
|
formats
|
|
}
|
|
sarrera {
|
|
deskribapena
|
|
id
|
|
label
|
|
url
|
|
}
|
|
titularra
|
|
zikloa {
|
|
izena
|
|
slug
|
|
}
|
|
}
|
|
}
|
|
`,
|
|
}),
|
|
});
|
|
|
|
const json = await response.json();
|
|
const { ekintzak } = json.data;
|
|
return ekintzak as Ekintza[];
|
|
},
|
|
});
|
|
|
|
const zikloak = defineCollection({
|
|
loader: async () => {
|
|
const response = await fetch(`${import.meta.env.STRAPI_URL}/graphql`, {
|
|
method: "POST",
|
|
headers: { "Content-Type": "application/json" },
|
|
body: JSON.stringify({
|
|
query: `
|
|
query {
|
|
zikloak {
|
|
id:documentId
|
|
slug
|
|
izena
|
|
deskribapena
|
|
ekintzak {
|
|
id:documentId
|
|
slug
|
|
izenburua
|
|
hitzordua
|
|
mainMedia {
|
|
alternativeText
|
|
formats
|
|
}
|
|
}
|
|
}
|
|
}
|
|
`,
|
|
}),
|
|
});
|
|
|
|
const json = await response.json();
|
|
const { zikloak } = json.data;
|
|
return zikloak as Zikloa[];
|
|
},
|
|
});
|
|
|
|
const orriBasikoak = defineCollection({
|
|
loader: async () => {
|
|
const response = await fetch(`${import.meta.env.STRAPI_URL}/graphql`, {
|
|
method: "POST",
|
|
headers: { "Content-Type": "application/json" },
|
|
body: JSON.stringify({
|
|
query: `
|
|
query {
|
|
orriBasikoak {
|
|
id: documentId
|
|
izenburua
|
|
slug
|
|
deskribapena
|
|
edukiLibrea {
|
|
... on ComponentParagraphTestua {
|
|
type: __typename
|
|
id
|
|
testua
|
|
}
|
|
... on ComponentParagraphIrudia {
|
|
type: __typename
|
|
id
|
|
media {
|
|
alternativeText
|
|
formats
|
|
}
|
|
}
|
|
... on ComponentParagraphCallToAction {
|
|
type: __typename
|
|
id
|
|
url
|
|
label
|
|
}
|
|
}
|
|
}
|
|
}
|
|
`,
|
|
}),
|
|
});
|
|
|
|
const json = await response.json();
|
|
const { orriBasikoak } = json.data;
|
|
return orriBasikoak as OrriBasikoa[];
|
|
},
|
|
});
|
|
|
|
export const collections = { ekintzak, zikloak, orriBasikoak };
|