From 46aab2f67f579d4af790011a16aba1dd0ae009c6 Mon Sep 17 00:00:00 2001 From: Andres Date: Mon, 9 Oct 2023 13:23:57 +0200 Subject: [PATCH] add new endpoints, add tag types to base api --- src/services/base-api.ts | 1 + src/services/decks/decks.service.ts | 42 +++++++++++++++++++++++++++-- 2 files changed, 41 insertions(+), 2 deletions(-) diff --git a/src/services/base-api.ts b/src/services/base-api.ts index 101bf44..43a17da 100644 --- a/src/services/base-api.ts +++ b/src/services/base-api.ts @@ -2,6 +2,7 @@ import { createApi, fetchBaseQuery } from '@reduxjs/toolkit/query/react' export const baseApi = createApi({ reducerPath: 'baseApi', + tagTypes: ['Decks'], baseQuery: fetchBaseQuery({ baseUrl: 'https://api.flashcards.andrii.es', credentials: 'include', diff --git a/src/services/decks/decks.service.ts b/src/services/decks/decks.service.ts index a448456..e58f7ea 100644 --- a/src/services/decks/decks.service.ts +++ b/src/services/decks/decks.service.ts @@ -1,4 +1,11 @@ -import { CardsResponse, DeckResponse, DecksResponse, GetDecksArgs } from './decks.types' +import { + CardsResponse, + CreateDeckArgs, + DeckResponse, + DecksResponse, + GetDecksArgs, + UpdateDeckArgs, +} from './decks.types' import { baseApi } from '@/services' @@ -11,6 +18,7 @@ const decksService = baseApi.injectEndpoints({ params: args ?? undefined, } }, + providesTags: ['Decks'], }), getDeckById: builder.query({ query: ({ id }) => `v1/decks/${id}`, @@ -18,7 +26,37 @@ const decksService = baseApi.injectEndpoints({ getDeckCards: builder.query({ query: ({ id }) => `v1/decks/${id}/cards`, }), + createDeck: builder.mutation({ + query: body => ({ + url: `v1/decks`, + method: 'POST', + body, + }), + invalidatesTags: ['Decks'], + }), + deleteDeck: builder.mutation({ + query: ({ id }) => ({ + url: `v1/decks/${id}`, + method: 'DELETE', + }), + invalidatesTags: ['Decks'], + }), + updateDeck: builder.mutation({ + query: ({ id, ...body }) => ({ + url: `v1/decks/${id}`, + method: 'PATCH', + body, + }), + invalidatesTags: ['Decks'], + }), }), }) -export const { useGetDecksQuery, useGetDeckByIdQuery, useGetDeckCardsQuery } = decksService +export const { + useGetDecksQuery, + useGetDeckByIdQuery, + useGetDeckCardsQuery, + useCreateDeckMutation, + useDeleteDeckMutation, + useUpdateDeckMutation, +} = decksService