ぼざクリタグ広場 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.
 
 
 
 

72 lines
2.3 KiB

  1. import { apiDelete, apiGet, apiPost, apiPut } from '@/lib/api'
  2. import type { FetchPostsParams, Post, PostVersion } 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. { post, tag, page, limit }: {
  26. post?: string
  27. tag?: string
  28. page: number
  29. limit: number },
  30. ): Promise<{
  31. versions: PostVersion[]
  32. count: number }> =>
  33. await apiGet ('/posts/versions', { params: { ...(post && { post }),
  34. ...(tag && { tag }),
  35. page, limit } })
  36. export const updatePost = async (
  37. post: { id: number
  38. title: string | null
  39. tags: string
  40. parentPostIds: string
  41. originalCreatedFrom: string | null
  42. originalCreatedBefore: string | null },
  43. { baseVersionNo, force, merge }: {
  44. baseVersionNo?: number
  45. force?: boolean
  46. merge?: boolean }
  47. ) =>
  48. await apiPut<Post> (
  49. `/posts/${ post.id }`,
  50. { title: post.title,
  51. tags: post.tags,
  52. parent_post_ids: post.parentPostIds,
  53. original_created_from: post.originalCreatedFrom,
  54. original_created_before: post.originalCreatedBefore },
  55. { params: { ...(baseVersionNo && { base_version_no: String (baseVersionNo) }),
  56. force: force ? '1' : '0',
  57. merge: merge ? '1' : '0' } })
  58. export const toggleViewedFlg = async (id: string, viewed: boolean): Promise<void> => {
  59. await (viewed ? apiPost : apiDelete) (`/posts/${ id }/viewed`)
  60. }