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

59 lines
1.5 KiB
TypeScript

import { UserType } from "../types";
import grabDbFullName from "./grab-db-full-name";
import numberfy from "./numberfy";
type Param = {
/**
* Database full name or slug
*/
dbName?: string;
userId?: string | number;
user?: UserType | null;
};
/**
* # 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 || "datasquirel_user_";
const finalUserId =
params?.user?.id ||
params?.userId ||
numberfy(process.env.DSQL_USER_ID) ||
numberfy(process.env.DSQL_DB_NAME?.split("_")?.[2]) ||
undefined;
const userDbPrefix = finalUserId
? `${dbNamePrefix}${finalUserId}_`
: undefined;
const finalDbName =
params?.dbName || process.env.DSQL_DB_NAME || process.env.DSQL_DB_SLUG;
const dbSlug = finalDbName
? userDbPrefix
? finalDbName.replace(userDbPrefix, "")
: finalDbName.replace(new RegExp(`^${dbNamePrefix}\\d+_`), "")
: undefined;
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,
};
}