76 lines
2.1 KiB
TypeScript
76 lines
2.1 KiB
TypeScript
|
import * as dotenv from 'dotenv';
|
||
|
|
||
|
dotenv.config();
|
||
|
|
||
|
const mariadb = require('mariadb');
|
||
|
const prod_pool = mariadb.createPool({
|
||
|
host: process.env.DB_HOST,
|
||
|
user: process.env.DB_USER,
|
||
|
password: process.env.DB_PASSWORD,
|
||
|
database: process.env.PARTYPLANER_PROD_DATABASE,
|
||
|
connectionLimit: 5
|
||
|
});
|
||
|
const dev_pool = mariadb.createPool({
|
||
|
host: process.env.DB_HOST,
|
||
|
user: process.env.DB_USER,
|
||
|
password: process.env.DB_PASSWORD,
|
||
|
database: process.env.PARTYPLANER_DEV_DATABASE,
|
||
|
connectionLimit: 5
|
||
|
});
|
||
|
|
||
|
/**
|
||
|
* Used in the getUserData method as return value
|
||
|
*/
|
||
|
export interface UserData {
|
||
|
username: string;
|
||
|
email: string;
|
||
|
firstName: string;
|
||
|
lastName: string;
|
||
|
lastLogin: string;
|
||
|
emailIsVerified: string;
|
||
|
isPremiumUser: string;
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Returns all data about the given user
|
||
|
* @param useDev If the dev or prod database should be used
|
||
|
* @param userId The userId of the user to return the data for
|
||
|
* @return UserData An object containing the user data
|
||
|
*/
|
||
|
export const getUserData = async (useDev: boolean, userId: string): Promise<UserData> => {
|
||
|
let conn;
|
||
|
try {
|
||
|
if (useDev) {
|
||
|
conn = await dev_pool.getConnection();
|
||
|
} else {
|
||
|
conn = await prod_pool.getConnection();
|
||
|
}
|
||
|
|
||
|
let rows = await conn.query('SELECT username, email, first_name, last_Name, last_login, email_is_verified, is_premium_user FROM users WHERE user_id = ?', userId);
|
||
|
|
||
|
let user: UserData = {} as UserData;
|
||
|
|
||
|
for (let row in rows) {
|
||
|
if (row !== 'meta') {
|
||
|
user = {
|
||
|
username: rows[row].username,
|
||
|
email: rows[row].email,
|
||
|
firstName: rows[row].first_name,
|
||
|
lastName: rows[row].last_name,
|
||
|
lastLogin: rows[row].last_login,
|
||
|
emailIsVerified: rows[row].email_is_verified,
|
||
|
isPremiumUser: rows[row].is_premium_user
|
||
|
};
|
||
|
}
|
||
|
}
|
||
|
|
||
|
return user;
|
||
|
} catch (err) {
|
||
|
throw err;
|
||
|
} finally {
|
||
|
if (conn) {
|
||
|
conn.end();
|
||
|
}
|
||
|
}
|
||
|
};
|