import { createApi, fetchBaseQuery } from '@reduxjs/toolkit/query/react'; import { RootState } from './store'; export interface LoginRequest { firstName: string; lastName: string; } export interface LoginResponse { guest: Guest; token: string; } export interface Guest { id: number; firstName: string; lastName: string; attendance: string; email: string; message: string; } export const apiSlice = createApi({ reducerPath: 'api', baseQuery: fetchBaseQuery({ baseUrl: '/', prepareHeaders: (headers, { getState }) => { const token = (getState() as RootState).auth.token; if (token) { headers.set('authorization', `Bearer ${token}`); } return headers; }, }), tagTypes: ['Guests'], endpoints: (builder) => ({ getGuests: builder.query({ query: () => '/guests', providesTags: ['Guests'], }), updateGuest: builder.mutation({ query: (guest) => ({ url: `/guests/${guest?.id}`, method: 'PATCH', body: guest, providesTags: ['Guests'], }), }), login: builder.mutation({ query: (credentials) => ({ url: '/guest-login', method: 'POST', body: credentials, }), }), }), }); export const { useGetGuestsQuery, useUpdateGuestMutation, useLoginMutation } = apiSlice;