import { apiDelete, apiGet, apiPost } from '@/lib/api' import type { FetchPostsParams, Post, PostTagChange } from '@/types' export const fetchPosts = async ( { url, title, tags, match, createdFrom, createdTo, updatedFrom, updatedTo, originalCreatedFrom, originalCreatedTo, page, limit, order }: FetchPostsParams ): Promise<{ posts: Post[] count: number }> => await apiGet ('/posts', { params: { ...(url && { url }), ...(title && { title }), ...(tags && { tags }), ...(match && { match }), ...(createdFrom && { created_from: createdFrom }), ...(createdTo && { created_to: createdTo }), ...(updatedFrom && { updated_from: updatedFrom }), ...(updatedTo && { updated_to: updatedTo }), ...(originalCreatedFrom && { original_created_from: originalCreatedFrom }), ...(originalCreatedTo && { original_created_to: originalCreatedTo }), ...(page && { page }), ...(limit && { limit }), ...(order && { order }) } }) export const fetchPost = async (id: string): Promise => await apiGet (`/posts/${ id }`) export const fetchPostChanges = async ( { id, page, limit }: { id?: string page: number limit: number }, ): Promise<{ changes: PostTagChange[] count: number }> => await apiGet ('/posts/changes', { params: { ...(id && { id }), page, limit } }) export const toggleViewedFlg = async (id: string, viewed: boolean): Promise => { await (viewed ? apiPost : apiDelete) (`/posts/${ id }/viewed`) }