59 lines
1.5 KiB
TypeScript
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,
|
|
};
|
|
}
|