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, userId: finalUserId, }); if (!dbFullName) throw new Error(`Couldn't grab DB full name!`); return { userDbPrefix, dbFullName, dbNamePrefix, dbSlug, }; }