import { api } from '@/services/api';



export interface TheorytrainsDataResponse {

    id?: string
    title: string,
    period: number
    description: string,
    status: boolean
}
export interface TheorytrainsDataResponseByID {
    success: boolean,
    message: string
    info: TheorytrainsDataResponse
}


export interface TheorytrainsGetDataResponse {

    success: boolean,
    message: string
    details: {
        docs: TheorytrainsDataResponse[],
        pages: number
        total: number
    }
} 

export const Theorytrains = api.injectEndpoints({
    endpoints: (build) => ({
        TheorytrainsGetData: build.query<TheorytrainsGetDataResponse, { search?: string, page: number, paginate: number }>({
            query: (params) => ({
                url: `/theorytrains/showall`,
                method: 'GET',
                params
            }),
            providesTags: ['TheorytrainsGetData'],
        }),
        TheorytrainsGetDataById: build.query<TheorytrainsDataResponseByID, { id: string }>({
            query: (params) => ({
                url: `/theorytrains`,
                params
            }),
            providesTags: ['TheorytrainsGetDataById'],
        }),
        TheorytrainsCreate: build.mutation<TheorytrainsDataResponse, TheorytrainsDataResponse>({
            query: (body) => ({
                url: '/theorytrains',
                method: 'POST',
                body,
            }),
            invalidatesTags: ['TheorytrainsGetData', 'TheorytrainsCreate', "TheorytrainsGetDataById"],
        }),
        TheorytrainsUpdate: build.mutation<TheorytrainsDataResponse, TheorytrainsDataResponse>({
            query: (body) => ({
                url: '/theorytrains',
                body,
                method: 'PUT',
            }),
            invalidatesTags: ['TheorytrainsGetData', "TheorytrainsGetDataById", 'TheorytrainsCreate', 'TheorytrainsUpdate'],
        }),

        TheorytrainsRemove: build.mutation<void, { id: string }>({
            query: (params) => ({
                url: `/theorytrains`,
                method: 'DELETE',
                params
            }),
            invalidatesTags: ['TheorytrainsGetData', "TheorytrainsGetDataById", 'TheorytrainsRemove'],
        }),
    }),
});

export const {
    useTheorytrainsGetDataQuery,
    useLazyTheorytrainsGetDataQuery,
    useTheorytrainsCreateMutation,
    useTheorytrainsGetDataByIdQuery,
    useLazyTheorytrainsGetDataByIdQuery,
    useTheorytrainsUpdateMutation,
    useTheorytrainsRemoveMutation,

} = Theorytrains;