Adding in flashcard's and decks

This commit is contained in:
2026-06-25 02:39:16 -07:00
parent 78da882bda
commit 535c4c4943
34 changed files with 1248 additions and 1 deletions
+63
View File
@@ -0,0 +1,63 @@
import http from "@/api/http-client"
import { type FiltersOptions, type ModelOrder, type Policy, type WhereOptions } from "@/api/base-api"
export type FlashcardDeck = {
id: number
parentDeckId: number | null
creatorId: number
name: string
createdAt: string
updatedAt: string
}
export type FlashcardDeckWhereOptions = WhereOptions<FlashcardDeck, "creatorId" | "parentDeckId">
export type FlashcardDeckFiltersOptions = FiltersOptions<{
search: string | string[]
}>
export type FlashcardDeckQueryOptions = {
where?: FlashcardDeckWhereOptions
filters?: FlashcardDeckFiltersOptions
order?: ModelOrder[]
page?: number
perPage?: number
}
export const flashcardDecksApi = {
async list(params: FlashcardDeckQueryOptions = {}): Promise<{
flashcardDecks: FlashcardDeck[]
totalCount: number
}> {
const { data } = await http.get("/api/flashcard-decks", { params })
return data
},
async get(flashcardDeckId: number): Promise<{
flashcardDeck: FlashcardDeck
policy: Policy
}> {
const { data } = await http.get(`/api/flashcard-decks/${flashcardDeckId}`)
return data
},
async create(attributes: Partial<FlashcardDeck>): Promise<{
flashcardDeck: FlashcardDeck
}> {
const { data } = await http.post("/api/flashcard-decks", attributes)
return data
},
async update(
flashcardDeckId: number,
attributes: Partial<FlashcardDeck>
): Promise<{
flashcardDeck: FlashcardDeck
}> {
const { data } = await http.patch(`/api/flashcard-decks/${flashcardDeckId}`, attributes)
return data
},
async delete(flashcardDeckId: number): Promise<void> {
const { data } = await http.delete(`/api/flashcard-decks/${flashcardDeckId}`)
return data
},
}
export default flashcardDecksApi
+65
View File
@@ -0,0 +1,65 @@
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