Files
2024-07-15 21:02:22 +07:00

114 lines
4.1 KiB
TypeScript

import { H3Event } from 'h3';
interface Base {
createdBy?: string | number
createdOn?: string
updatedBy?: string | number
updatedOn?: string
}
interface Article extends Base {
id?: number; // ID của bài viết
siteId?: number; // ID của trang web
articleId?: number; // ID của bài viết
originalId?: number; // ID còn bài viết gốc
sub?: string; // Tiêu đề phụ
title?: string; // Tiêu đề
slug?: string; // Đường dẫn thân thiện cho SEO
code?: string; // Mã bài viết
intro?: string; // Phần giới thiệu
brief?: string; // Tóm tắt
detail?: string; // Nội dung chi tiết
summary?: string; // Tóm tắt ngắn gọn
thumbnail?: string; // Đường dẫn hình ảnh đại diện
represent?: string; // Đại diện cho bài viết
redirect?: string; // Đường dẫn chuyển hướng
keywords?: string; // Từ khóa
description?: string; // Mô tả
type?: number; // Loại bài viết
layoutType?: number; // Loại giao diện
contentType?: number; // Loại nội dung
priority?: number; // Ưu tiên
features?: string; // Các tính năng
taxonomy?: string; // Phân loại
interaction?: string; // Tương tác
language?: string; // Ngôn ngữ
settings?: string; // Các tùy chọn
categoryId?: number; // ID của danh mục
categoryIds?: string; // Các ID danh mục liên quan
topicIds?: string; // Các ID chủ đề liên quan
eventIds?: string; // Các ID sự kiện liên quan
collectionIds?: string; // Các ID bộ sưu tập liên quan
urlIds?: string; // Các ID URL liên quan
sourceIds?: string; // Các ID nguồn liên quan
relatedArticleIds?: string; // Các ID liên quan
advertisementIds?: string; // Các ID quảng cáo liên quan
attachmentIds?: string; // Các ID tệp đính kèm liên quan
authorIds?: string; // Các ID tác giả liên quan
views?: number; // Số lượt xem
likes?: number; // Số lượt thích
rates?: number; // Đánh giá
follows?: number; // Số lượt theo dõi
shares?: number; // Số lượt chia sẻ
reports?: number; // Số lượt báo cáo
comments?: number; // Số lượt bình luận
statistics?: string; // Thống kê khác
isPublished?: boolean; // Đã xuất bản hay chưa
publishedBy?: number; // ID người xuất bản
publishedOn?: Date; // Ngày xuất bản
expiresOn?: Date; // Ngày hết hạn
order?: number; // Thứ tự
status?: number; // Trạng thái
}
export const getArticleById = async (event : any) => {
try {
const { apiUrl } = useRuntimeConfig().public
const id = event.context.params.id;
const query = getQuery(event)
const { item }: any = await $fetch(`${apiUrl}/cms/digital-article/${id}`, {
headers: new Headers({
site: getSite(query.site).toString(),
}),
})
return { item }
} catch (error) {
handleError(error);
}
}
export const getArticleBySlug = async (event : any) => {
try {
const { apiUrl } = useRuntimeConfig().public
const slug = event.context.params.slug;
const query = getQuery(event)
const { item }: any = await $fetch(`${apiUrl}/cms/digital-article/slug:${slug}`, {
headers: new Headers({
site: getSite(query.site).toString(),
}),
})
return { item }
} catch (error) {
handleError(error);
}
}
export const listArticleCondition = async (event: H3Event) => {
try {
const payload = await readBody<any>(event)
const { apiUrl } = useRuntimeConfig().public;
const query = getQuery(event)
const { items }: any = await $fetch(`${apiUrl}/cms/article/condition`, {
method: "POST",
headers: new Headers({
site: getSite(query.site).toString(),
}),
body: {
payload
}
})
return items
} catch (error) {
handleError(error);
}
}