feat: ArticleCard component
This commit is contained in:
+18
-11
@@ -8,12 +8,19 @@ import {
|
||||
} from '@directus/sdk'
|
||||
import type { Article, Category, SiteSettings } from './types'
|
||||
|
||||
const directus = createDirectus(process.env.DIRECTUS_URL!)
|
||||
.with(staticToken(process.env.DIRECTUS_TOKEN!))
|
||||
.with(rest())
|
||||
let _client: ReturnType<typeof createDirectus> | null = null
|
||||
|
||||
function getClient() {
|
||||
if (!_client) {
|
||||
_client = createDirectus(process.env.DIRECTUS_URL!)
|
||||
.with(staticToken(process.env.DIRECTUS_TOKEN!))
|
||||
.with(rest())
|
||||
}
|
||||
return _client
|
||||
}
|
||||
|
||||
export async function getAllCategories(): Promise<Category[]> {
|
||||
return directus.request(
|
||||
return getClient().request(
|
||||
readItems('categories', {
|
||||
fields: ['id', 'name', 'slug', 'description'],
|
||||
sort: ['name'],
|
||||
@@ -22,7 +29,7 @@ export async function getAllCategories(): Promise<Category[]> {
|
||||
}
|
||||
|
||||
export async function getCategoryBySlug(slug: string): Promise<Category | null> {
|
||||
const results = await directus.request(
|
||||
const results = await getClient().request(
|
||||
readItems('categories', {
|
||||
fields: ['id', 'name', 'slug', 'description'],
|
||||
filter: { slug: { _eq: slug } },
|
||||
@@ -42,7 +49,7 @@ export async function getArticles(options: {
|
||||
if (categorySlug) {
|
||||
filter['category'] = { slug: { _eq: categorySlug } }
|
||||
}
|
||||
return directus.request(
|
||||
return getClient().request(
|
||||
readItems('articles', {
|
||||
fields: [
|
||||
'id', 'title', 'slug', 'status', 'excerpt', 'featured_image',
|
||||
@@ -58,7 +65,7 @@ export async function getArticles(options: {
|
||||
}
|
||||
|
||||
export async function getArticleBySlug(slug: string): Promise<Article | null> {
|
||||
const results = await directus.request(
|
||||
const results = await getClient().request(
|
||||
readItems('articles', {
|
||||
fields: [
|
||||
'id', 'title', 'slug', 'status', 'content', 'excerpt',
|
||||
@@ -79,7 +86,7 @@ export async function getArticlePathById(id: string): Promise<{
|
||||
category: { slug: string }
|
||||
} | null> {
|
||||
try {
|
||||
return await directus.request(
|
||||
return await getClient().request(
|
||||
readItem('articles', id, {
|
||||
fields: ['slug', 'category.slug'],
|
||||
})
|
||||
@@ -93,7 +100,7 @@ export async function getRelatedArticles(
|
||||
categorySlug: string,
|
||||
excludeSlug: string,
|
||||
): Promise<Article[]> {
|
||||
return directus.request(
|
||||
return getClient().request(
|
||||
readItems('articles', {
|
||||
fields: [
|
||||
'id', 'title', 'slug', 'excerpt', 'featured_image',
|
||||
@@ -111,7 +118,7 @@ export async function getRelatedArticles(
|
||||
}
|
||||
|
||||
export async function getSiteSettings(): Promise<SiteSettings> {
|
||||
return directus.request(
|
||||
return getClient().request(
|
||||
readSingleton('site_settings', {
|
||||
fields: [
|
||||
'id', 'site_name',
|
||||
@@ -125,7 +132,7 @@ export async function getSiteSettings(): Promise<SiteSettings> {
|
||||
}
|
||||
|
||||
export async function searchArticles(query: string): Promise<Article[]> {
|
||||
return directus.request(
|
||||
return getClient().request(
|
||||
readItems('articles', {
|
||||
fields: ['id', 'title', 'slug', 'category.slug', 'category.name'],
|
||||
search: query,
|
||||
|
||||
Reference in New Issue
Block a user