feat: articles pagination
This commit is contained in:
1 parent
a2d224240c
commit
73f4b539fe
45 files changed
+3528
-317
No files matched your search
@@ -1,4 +1,5 @@
|
||||
import { useApi } from '@/composables/useApi'
|
||||
import type { ArticleStatus } from '@/lib/articleListQuery'
|
||||
|
||||
export interface Article {
|
||||
id: number
|
||||
@@ -9,11 +10,49 @@ export interface Article {
|
||||
updated_at: string
|
||||
}
|
||||
|
||||
export type { ArticleStatus }
|
||||
|
||||
export interface ArticleCounts {
|
||||
all: number
|
||||
online: number
|
||||
draft: number
|
||||
}
|
||||
|
||||
export interface ArticlePage {
|
||||
items: Article[]
|
||||
total: number
|
||||
page: number
|
||||
size: number
|
||||
counts: ArticleCounts
|
||||
}
|
||||
|
||||
export interface ListArticlesParams {
|
||||
page: number
|
||||
size: number
|
||||
q?: string
|
||||
status?: ArticleStatus | ''
|
||||
sort?: string
|
||||
}
|
||||
|
||||
export function useArticles() {
|
||||
const { request } = useApi()
|
||||
|
||||
function listArticles(): Promise<Article[]> {
|
||||
return request<Article[]>('/v1/article/?format=html')
|
||||
function listArticles(params: ListArticlesParams): Promise<ArticlePage> {
|
||||
const query = new URLSearchParams({
|
||||
format: 'html',
|
||||
page: String(params.page),
|
||||
size: String(params.size),
|
||||
})
|
||||
if (params.q) {
|
||||
query.set('q', params.q)
|
||||
}
|
||||
if (params.status) {
|
||||
query.set('status', params.status)
|
||||
}
|
||||
if (params.sort) {
|
||||
query.set('sort', params.sort)
|
||||
}
|
||||
return request<ArticlePage>(`/v1/article/?${query.toString()}`)
|
||||
}
|
||||
|
||||
return { listArticles }
|
||||
|
||||
Reference in new issue
Block a user