import { Request, Response } from "express"
import { asyncHandler } from "@/core/asyncHandler"
import {
    AdminLoginSchema,
    AdminRegisterSchema,
    RefreshSchema,
    type AdminLoginResponse
} from "ttm-shared"

import { adminAuthService } from "./admin-auth.service"

export const register = asyncHandler(async (req: Request, res: Response) => {
    const { email, password } = AdminRegisterSchema.parse(req.body)

    const result: AdminLoginResponse = await adminAuthService.register(email, password)

    res.status(201).json(result)
})

export const login = asyncHandler(async (req: Request, res: Response) => {
    const { email, password } = AdminLoginSchema.parse(req.body)

    const result: AdminLoginResponse = await adminAuthService.login(email, password)

    res.json(result)
})

export const refresh = asyncHandler(async (req: Request, res: Response) => {
    const { refreshToken } = RefreshSchema.parse(req.body)

    const result: AdminLoginResponse = await adminAuthService.refresh(refreshToken)

    res.json(result)
})