62 lines
2.1 KiB
TypeScript
62 lines
2.1 KiB
TypeScript
import pool from "../db";
|
|
import { Member, MemberLight, memberSettings, MemberState } from '@app/shared/types/member'
|
|
|
|
export async function getUserData(userID: number) {
|
|
const sql = `SELECT * FROM members WHERE id = ?`;
|
|
const res = await pool.query(sql, [userID]);
|
|
return res[0] ?? null;
|
|
}
|
|
|
|
export async function setUserState(userID: number, state: MemberState) {
|
|
const sql = `UPDATE members
|
|
SET state = ?
|
|
WHERE id = ?;`;
|
|
return await pool.query(sql, [state, userID]);
|
|
}
|
|
|
|
export async function getUserState(user: number): Promise<MemberState> {
|
|
let out = await pool.query(`SELECT state FROM members WHERE id = ?`, [user]);
|
|
return (out[0].state as MemberState);
|
|
}
|
|
|
|
export async function getMemberSettings(id: number): Promise<memberSettings> {
|
|
const sql = `SELECT * FROM view_member_settings WHERE id = ?`;
|
|
let out: memberSettings[] = await pool.query(sql, [id]);
|
|
|
|
if (out.length != 1)
|
|
throw new Error("Could not get user settings");
|
|
|
|
return out[0];
|
|
}
|
|
|
|
export async function setUserSettings(id: number, settings: memberSettings) {
|
|
const sql = `UPDATE view_member_settings SET
|
|
displayName = ?
|
|
WHERE id = ?;`;
|
|
let result = await pool.query(sql, [settings.displayName, id])
|
|
console.log(result);
|
|
}
|
|
|
|
export async function getMembersLite(ids: number[]): Promise<MemberLight[]> {
|
|
const sql = `SELECT m.member_id AS id,
|
|
m.member_name AS username,
|
|
m.displayName,
|
|
u.color
|
|
FROM view_member_rank_unit_status_latest m
|
|
LEFT JOIN units u ON u.name = m.unit
|
|
WHERE member_id IN (?);`;
|
|
const res: MemberLight[] = await pool.query(sql, [ids]);
|
|
return res;
|
|
}
|
|
|
|
export async function getMembersFull(ids: number[]): Promise<Member[]> {
|
|
const sql = `SELECT * FROM view_member_rank_unit_status_latest WHERE member_id IN (?);`;
|
|
const res: Member[] = await pool.query(sql, [ids]);
|
|
return res;
|
|
}
|
|
|
|
export async function mapDiscordtoID(id: number): Promise<number | null> {
|
|
const sql = `SELECT id FROM members WHERE discord_id = ?;`
|
|
let res = await pool.query(sql, [id]);
|
|
return res.length > 0 ? res[0].id : null;
|
|
} |