datasquirel/package-shared/utils/grab-db-names.ts
2025-11-13 06:16:55 +01:00

47 lines
1.1 KiB
TypeScript

import { UserType } from "../types";
import grabDbFullName from "./grab-db-full-name";
type Param = {
/**
* Database full name or slug
*/
dbName?: string;
userId?: string | number;
user?: UserType | null;
nullable?: boolean;
};
/**
* # Grab full database name
* @description Grab full database name from slug or full name
* @param param0
* @returns
*/
export default function grabDbNames(params?: Param) {
const dbNamePrefix = process.env.DSQL_USER_DB_PREFIX;
const finalUserId = params?.user?.id || params?.userId;
const userDbPrefix = finalUserId ? `${dbNamePrefix}${finalUserId}_` : ``;
const finalDbName =
params?.dbName || process.env.DSQL_DB_NAME || process.env.DSQL_DB_SLUG;
const dbSlug = finalDbName?.replace(userDbPrefix, "");
if (!dbSlug) throw new Error(`No Db Name Provided!`);
const dbFullName = grabDbFullName({
dbName: dbSlug,
user: params?.user,
userId: params?.userId,
});
if (!dbFullName) throw new Error(`Couldn't grab DB full name!`);
return {
userDbPrefix,
dbFullName,
dbNamePrefix,
dbSlug,
};
}