ぼざクリタグ広場 https://hub.nizika.monster
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

45 lines
1.5 KiB

  1. import { apiDelete, apiGet, apiPost } from '@/lib/api'
  2. import type { FetchPostsParams, Post, PostTagChange } from '@/types'
  3. export const fetchPosts = async (
  4. { url, title, tags, match, createdFrom, createdTo, updatedFrom, updatedTo,
  5. originalCreatedFrom, originalCreatedTo, page, limit, order }: FetchPostsParams
  6. ): Promise<{
  7. posts: Post[]
  8. count: number }> =>
  9. await apiGet ('/posts', { params: {
  10. ...(url && { url }),
  11. ...(title && { title }),
  12. ...(tags && { tags }),
  13. ...(match && { match }),
  14. ...(createdFrom && { created_from: createdFrom }),
  15. ...(createdTo && { created_to: createdTo }),
  16. ...(updatedFrom && { updated_from: updatedFrom }),
  17. ...(updatedTo && { updated_to: updatedTo }),
  18. ...(originalCreatedFrom && { original_created_from: originalCreatedFrom }),
  19. ...(originalCreatedTo && { original_created_to: originalCreatedTo }),
  20. ...(page && { page }),
  21. ...(limit && { limit }),
  22. ...(order && { order }) } })
  23. export const fetchPost = async (id: string): Promise<Post> => await apiGet (`/posts/${ id }`)
  24. export const fetchPostChanges = async (
  25. { id, page, limit }: {
  26. id?: string
  27. page: number
  28. limit: number },
  29. ): Promise<{
  30. changes: PostTagChange[]
  31. count: number }> =>
  32. await apiGet ('/posts/changes', { params: { ...(id && { id }), page, limit } })
  33. export const toggleViewedFlg = async (id: string, viewed: boolean): Promise<void> => {
  34. await (viewed ? apiPost : apiDelete) (`/posts/${ id }/viewed`)
  35. }