datasquirel/package-shared/functions/backend/db/deleteDbEntry.ts
2025-01-20 09:12:43 +01:00

65 lines
1.8 KiB
TypeScript

import DB_HANDLER from "../../../utils/backend/global-db/DB_HANDLER";
import DSQL_USER_DB_HANDLER from "../../../utils/backend/global-db/DSQL_USER_DB_HANDLER";
import LOCAL_DB_HANDLER from "../../../utils/backend/global-db/LOCAL_DB_HANDLER";
type Param = {
dbContext?: string;
paradigm?: "Read Only" | "Full Access";
dbFullName: string;
tableName: string;
tableSchema?: import("../../../types").DSQL_TableSchemaType;
identifierColumnName: string;
identifierValue: string | number;
};
/**
* # Delete DB Entry Function
* @description
*/
export default async function deleteDbEntry({
dbContext,
paradigm,
dbFullName,
tableName,
identifierColumnName,
identifierValue,
}: Param): Promise<object | null> {
try {
const isMaster = global.DSQL_USE_LOCAL
? true
: dbContext?.match(/dsql.user/i)
? false
: dbFullName && !dbFullName.match(/^datasquirel$/)
? false
: true;
const dbHandler: (a1: any, a2?: any) => any = global.DSQL_USE_LOCAL
? LOCAL_DB_HANDLER
: isMaster
? DB_HANDLER
: DSQL_USER_DB_HANDLER;
/**
* Execution
*
* @description
*/
const query = `DELETE FROM \`${dbFullName}\`.\`${tableName}\` WHERE \`${identifierColumnName}\`=?`;
const deletedEntry = isMaster
? await dbHandler(query, [identifierValue])
: await dbHandler({
paradigm,
queryString: query,
queryValues: [identifierValue],
});
/**
* Return statement
*/
return deletedEntry;
} catch (error) {
return null;
}
}