import {
    APIGetUserFunctionParams,
    GetUserFunctionReturn,
} from "../../../types";
import varDatabaseDbHandler from "../../backend/varDatabaseDbHandler";

/**
 * # API Get User
 */
export default async function apiGetUser({
    fields,
    dbFullName,
    userId,
}: APIGetUserFunctionParams): Promise<GetUserFunctionReturn> {
    const finalDbName = dbFullName.replace(/[^a-z0-9_]/g, "");

    const query = `SELECT ${fields.join(
        ","
    )} FROM ${finalDbName}.users WHERE id=?`;
    const API_USER_ID = userId || process.env.DSQL_API_USER_ID;

    let foundUser = await varDatabaseDbHandler({
        queryString: query,
        queryValuesArray: [API_USER_ID],
        database: finalDbName,
    });

    if (!foundUser || !foundUser[0]) {
        return {
            success: false,
            payload: null,
        };
    }

    return {
        success: true,
        payload: foundUser[0],
    };
}
