datasquirel/package-shared/functions/backend/grab-mariadb-main-user-for-user.ts
Benjamin Toby 7e8bb37c09 Updates
2025-07-05 14:59:30 +01:00

71 lines
1.8 KiB
TypeScript

import { UserType } from "../../types";
import dbHandler from "./dbHandler";
import dsqlCrud from "../../utils/data-fetching/crud";
import { DSQL_DATASQUIREL_USERS, DsqlTables } from "../../types/dsql";
import decrypt from "../dsql/decrypt";
import createUserSQLUser from "../../utils/create-user-sql-user";
import grabUserMainSqlUserName from "../../utils/grab-user-main-sql-user-name";
type Params = {
user: UserType;
};
type Return = {
fullName?: string;
host?: string;
username?: string;
password?: string;
};
export default async function grabMariadbMainUserForUser({
user,
}: Params): Promise<Return> {
const {
fullName,
host,
username: mariaDBUsername,
webHost,
} = grabUserMainSqlUserName({ user });
const existingWebAppUser = (await dbHandler({
query: `SELECT * FROM mysql.user WHERE user=? AND host=?`,
values: [mariaDBUsername, webHost],
})) as any[];
if (!existingWebAppUser?.[0]) {
return await createUserSQLUser(user);
} else {
const existingUserRecord = await dsqlCrud<
DSQL_DATASQUIREL_USERS,
(typeof DsqlTables)[number]
>({
action: "get",
table: "users",
query: {
query: {
id: {
value: String(user.id),
},
},
},
});
const targetUser = (
existingUserRecord?.payload as DSQL_DATASQUIREL_USERS[] | undefined
)?.[0];
if (!targetUser?.id) {
return {};
}
return {
fullName,
host,
username: mariaDBUsername,
password: decrypt({
encryptedString: targetUser.mariadb_pass || "",
}),
};
}
}