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;