mirror of
https://github.com/ershisan99/flashcards-example-project.git
synced 2026-01-04 05:02:04 +00:00
62 lines
1.5 KiB
TypeScript
62 lines
1.5 KiB
TypeScript
import {
|
|
CardsResponse,
|
|
CreateDeckArgs,
|
|
DeckResponse,
|
|
DecksResponse,
|
|
GetDecksArgs,
|
|
UpdateDeckArgs,
|
|
baseApi,
|
|
} from '@/services'
|
|
|
|
const decksService = baseApi.injectEndpoints({
|
|
endpoints: builder => ({
|
|
createDeck: builder.mutation<DeckResponse, CreateDeckArgs>({
|
|
invalidatesTags: ['Decks'],
|
|
query: body => ({
|
|
body,
|
|
method: 'POST',
|
|
url: `v1/decks`,
|
|
}),
|
|
}),
|
|
deleteDeck: builder.mutation<void, { id: string }>({
|
|
invalidatesTags: ['Decks'],
|
|
query: ({ id }) => ({
|
|
method: 'DELETE',
|
|
url: `v1/decks/${id}`,
|
|
}),
|
|
}),
|
|
getDeckById: builder.query<DeckResponse, { id: string }>({
|
|
query: ({ id }) => `v1/decks/${id}`,
|
|
}),
|
|
getDeckCards: builder.query<CardsResponse, { id: string }>({
|
|
query: ({ id }) => `v1/decks/${id}/cards`,
|
|
}),
|
|
getDecks: builder.query<DecksResponse, GetDecksArgs | void>({
|
|
providesTags: ['Decks'],
|
|
query: args => {
|
|
return {
|
|
params: args ?? undefined,
|
|
url: `v1/decks`,
|
|
}
|
|
},
|
|
}),
|
|
updateDeck: builder.mutation<DeckResponse, UpdateDeckArgs>({
|
|
invalidatesTags: ['Decks'],
|
|
query: ({ id, ...body }) => ({
|
|
body,
|
|
method: 'PATCH',
|
|
url: `v1/decks/${id}`,
|
|
}),
|
|
}),
|
|
}),
|
|
})
|
|
|
|
export const {
|
|
useCreateDeckMutation,
|
|
useDeleteDeckMutation,
|
|
useGetDeckByIdQuery,
|
|
useGetDeckCardsQuery,
|
|
useGetDecksQuery,
|
|
useUpdateDeckMutation,
|
|
} = decksService
|