53 lines
1.3 KiB
TypeScript
53 lines
1.3 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 || "datasquirel_user_";
|
|
const finalUserId = params?.user?.id || params?.userId;
|
|
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,
|
|
};
|
|
}
|