import { api } from './api';
import { CreateQuestionRequest } from './questions';

type GetTheorytrainsByIdResponse = {
    success: boolean,
    message: string,
    info: CreateTheorytrainsRequest
}
type GetTheorytrainssResponse = {
    success: boolean,
    message: string,
    details: {
        docs: CreateTheorytrainsRequest[],
        pages: 1,
        total: 1
    }
}

export type CreateTheorytrainsRequest = {
    id?: string,
    title: string,
    period: number,
    description: string,
    status?: boolean,
    Questions?: CreateQuestionRequest[]
}
type CreateTheorytrainsResponse = {
    success: boolean,
    message: string,
    result: CreateTheorytrainsRequest
}
export const Theorytrains = api.injectEndpoints({
    endpoints: (build) => ({
        CreateTheorytrains: build.mutation<CreateTheorytrainsResponse, CreateTheorytrainsRequest>({
            query: (body) => ({
                url: 'theorytrains',
                method: 'POST',
                body,
            }),
            invalidatesTags: ['CreateTheorytrains'],
        }),
        getTheorytrainss: build.query<GetTheorytrainssResponse, any>({
            query: (params) => ({
                url: `theorytrains/showall`,
                method: 'GET',
                // params,
            }),
            providesTags: ['getTheorytrains', "CreateTheorytrains"],
        }),
        getTheorytrainsById: build.query<GetTheorytrainsByIdResponse, { id: string }>({
            query: (params) => ({
                url: `theorytrains`,
                method: 'GET',
                params,
            }),
            providesTags: ['getTheorytrainsById', "CreateTheorytrains"],
        }),

    }),
});

export const {
    useCreateTheorytrainsMutation,
    useGetTheorytrainssQuery,
    useGetTheorytrainsByIdQuery,
    useLazyGetTheorytrainsByIdQuery,
} = Theorytrains;