generated from alphane/template
66 lines
1.7 KiB
TypeScript
66 lines
1.7 KiB
TypeScript
import http from "@/api/http-client"
|
|
import { type FiltersOptions, type ModelOrder, type Policy, type WhereOptions } from "@/api/base-api"
|
|
|
|
export type Flashcard = {
|
|
id: number
|
|
flashcardDeckId: number
|
|
creatorId: number
|
|
cardType: string
|
|
front: string
|
|
back: string | null
|
|
createdAt: string
|
|
updatedAt: string
|
|
}
|
|
|
|
export type FlashcardWhereOptions = WhereOptions<Flashcard, "flashcardDeckId" | "creatorId" | "cardType">
|
|
|
|
export type FlashcardFiltersOptions = FiltersOptions<{
|
|
search: string | string[]
|
|
}>
|
|
|
|
export type FlashcardQueryOptions = {
|
|
where?: FlashcardWhereOptions
|
|
filters?: FlashcardFiltersOptions
|
|
order?: ModelOrder[]
|
|
page?: number
|
|
perPage?: number
|
|
}
|
|
|
|
export const flashcardsApi = {
|
|
async list(params: FlashcardQueryOptions = {}): Promise<{
|
|
flashcards: Flashcard[]
|
|
totalCount: number
|
|
}> {
|
|
const { data } = await http.get("/api/flashcards", { params })
|
|
return data
|
|
},
|
|
async get(flashcardId: number): Promise<{
|
|
flashcard: Flashcard
|
|
policy: Policy
|
|
}> {
|
|
const { data } = await http.get(`/api/flashcards/${flashcardId}`)
|
|
return data
|
|
},
|
|
async create(attributes: Partial<Flashcard>): Promise<{
|
|
flashcard: Flashcard
|
|
}> {
|
|
const { data } = await http.post("/api/flashcards", attributes)
|
|
return data
|
|
},
|
|
async update(
|
|
flashcardId: number,
|
|
attributes: Partial<Flashcard>
|
|
): Promise<{
|
|
flashcard: Flashcard
|
|
}> {
|
|
const { data } = await http.patch(`/api/flashcards/${flashcardId}`, attributes)
|
|
return data
|
|
},
|
|
async delete(flashcardId: number): Promise<void> {
|
|
const { data } = await http.delete(`/api/flashcards/${flashcardId}`)
|
|
return data
|
|
},
|
|
}
|
|
|
|
export default flashcardsApi
|