import { createLog } from "../../services/logger/logger.js";

export function returnRes<T>(
    success: true,
    message: string,
    service: string,
    user: string,
    level: "info" | "error",
    data: T
): { success: true; message: string; data: T };

export function returnRes<T>(
    success: false,
    message: string,
    service: string,
    user: string,
    level: "info" | "error",
    data?: T
): { success: false; message: string; error: T | string };

export function returnRes<T>(
    success: boolean,
    message: string,
    service: string,
    user: string,
    level: "info" | "error",
    data?: T
) {
    createLog(level, user, service, message);

    if (success) {
        return { success: true, message, data: data as T };
    } else {
        return {
            success: false,
            message,
            error: data ?? "An unknown error occurred",
        };
    }
}

// export const returnApi = (c:Context,success: boolean, message: string, data?: any, code: number)=>{
//     /**
//    * just a simple return to reduce the typing and make sure we are always consitant with our returns.
//    *
//    * data can be an error as well.
//    */
//   return c.json({success, message, data}, code);
// }
