basecafe.jp/src/lib/directus/news.ts
system_master 72ff38c274 ・公開フラグ参照漏れの修正
・news詳細リンク生成不具合対応
2025-11-01 15:34:28 +09:00

60 lines
1.4 KiB
TypeScript

// src/lib/directus/news.ts
import { directusFetch } from "@/lib/directus/index";
import { NewsItem } from "@/types/news";
/**
* 最新ニュース5件取得
*/
export async function getLatestNews(): Promise<NewsItem[]> {
const query = [
"filter[status][_eq]=1", // ✅ 公開=1 のみ取得
"sort[]=-published_at",
"limit=5",
"fields[]=id",
"fields[]=title",
"fields[]=slug",
"fields[]=published_at",
"fields[]=thumbnail.id",
"fields[]=thumbnail.filename_disk",
"fields[]=linkurl",
"fields[]=link_target",
"fields[]=tags",
].join("&");
return await directusFetch<NewsItem[]>(`/items/news?${query}`);
}
/**
* 全ニュース一覧取得
*/
export async function getAllNews(): Promise<NewsItem[]> {
const query = [
"filter[status][_eq]=1", // ✅ 公開=1 のみ取得
"sort[]=-published_at",
"fields[]=id",
"fields[]=title",
"fields[]=slug",
"fields[]=published_at",
"fields[]=thumbnail.id",
"fields[]=thumbnail.filename_disk",
"fields[]=linkurl",
"fields[]=link_target",
"fields[]=tags",
"fields[]=content",
].join("&");
return await directusFetch<NewsItem[]>(`/items/news?${query}`);
}
/**
* ニュースID指定で詳細取得
*/
export async function getNewsById(id: number): Promise<NewsItem | null> {
try {
return await directusFetch<NewsItem>(
`/items/news/${id}?fields=id,title,content,published_at,tags,status,thumbnail.id,mainimg.*`
);
} catch {
return null;
}
}