Fetch Directus data
This commit is contained in:
@@ -0,0 +1 @@
|
||||
DIRECTUS_API_URL=
|
||||
+41
-1
@@ -1,5 +1,45 @@
|
||||
import {createDirectus, rest, readItems} from '@directus/sdk'
|
||||
import {Typography} from '@mui/material'
|
||||
import {formatKonstitisyon} from '../lib/format.js'
|
||||
|
||||
async function getData() {
|
||||
const apiUrl = process.env.DIRECTUS_API_URL
|
||||
|
||||
if (!apiUrl) {
|
||||
throw new Error('DIRECTUS_API_URL is required')
|
||||
}
|
||||
|
||||
const client = createDirectus(apiUrl).with(rest())
|
||||
|
||||
try {
|
||||
const titres = await client.request(
|
||||
readItems('titres', {
|
||||
sort: 'numero'
|
||||
})
|
||||
)
|
||||
|
||||
const articles = await client.request(
|
||||
readItems('articles', {
|
||||
sort: 'numero'
|
||||
})
|
||||
)
|
||||
|
||||
if (titres.length === 0 || articles.length === 0) {
|
||||
throw new Error('No data')
|
||||
}
|
||||
|
||||
const konstitisyon = formatKonstitisyon(titres, articles)
|
||||
|
||||
return konstitisyon
|
||||
} catch {
|
||||
throw new Error('Failed to fetch data')
|
||||
}
|
||||
}
|
||||
|
||||
export default async function Page() {
|
||||
const data = await getData()
|
||||
|
||||
console.log('data', data)
|
||||
|
||||
export default function Page() {
|
||||
return <Typography variant='h1'>konstitisyon.la</Typography>
|
||||
}
|
||||
|
||||
@@ -0,0 +1,17 @@
|
||||
export function formatKonstitisyon(titres, articles) {
|
||||
const konstitisyon = []
|
||||
|
||||
for (const titre of titres) {
|
||||
const articlesFromTitres = articles.filter(article => article.titre === titre.id)
|
||||
|
||||
konstitisyon.push(
|
||||
{
|
||||
titre: titre.contenu,
|
||||
titreId: titre.id,
|
||||
articles: articlesFromTitres
|
||||
}
|
||||
)
|
||||
}
|
||||
|
||||
return konstitisyon
|
||||
}
|
||||
+3
-1
@@ -34,7 +34,9 @@
|
||||
{
|
||||
"namedComponents": "function-declaration"
|
||||
}
|
||||
]
|
||||
],
|
||||
"n/prefer-global/process": "off",
|
||||
"comma-dangle": "off"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user