Implemented user deserialize cache
This commit is contained in:
19
api/src/services/cache/cache.ts
vendored
Normal file
19
api/src/services/cache/cache.ts
vendored
Normal file
@@ -0,0 +1,19 @@
|
||||
export class CacheService<Key, Value> {
|
||||
private cacheMap: Map<Key, Value>
|
||||
|
||||
constructor() {
|
||||
this.cacheMap = new Map<Key, Value>();
|
||||
}
|
||||
|
||||
public Get(key: Key): Value {
|
||||
return this.cacheMap.get(key)
|
||||
}
|
||||
|
||||
public Set(key: Key, value: Value) {
|
||||
this.cacheMap.set(key, value);
|
||||
}
|
||||
|
||||
public Invalidate(key: Key): boolean {
|
||||
return this.cacheMap.delete(key);
|
||||
}
|
||||
}
|
||||
@@ -1,6 +1,8 @@
|
||||
import { Role } from "@app/shared/types/roles";
|
||||
import pool from "../../db";
|
||||
import { Member, MemberCardDetails, MemberLight, memberSettings, MemberState } from '@app/shared/types/member'
|
||||
import { logger } from "../logging/logger";
|
||||
import { memberCache } from "../../routes/auth";
|
||||
|
||||
export async function getUserData(userID: number): Promise<Member> {
|
||||
const sql = `SELECT * FROM view_member_rank_unit_status_latest WHERE member_id = ?`;
|
||||
@@ -9,10 +11,16 @@ export async function getUserData(userID: number): Promise<Member> {
|
||||
}
|
||||
|
||||
export async function setUserState(userID: number, state: MemberState) {
|
||||
const sql = `UPDATE members
|
||||
try {
|
||||
const sql = `UPDATE members
|
||||
SET state = ?
|
||||
WHERE id = ?;`;
|
||||
return await pool.query(sql, [state, userID]);
|
||||
return await pool.query(sql, [state, userID]);
|
||||
} catch (error) {
|
||||
logger.error('app', 'Error setting user state', error);
|
||||
} finally {
|
||||
memberCache.Invalidate(userID);
|
||||
}
|
||||
}
|
||||
|
||||
export async function getUserState(user: number): Promise<MemberState> {
|
||||
|
||||
@@ -1,12 +1,20 @@
|
||||
import { MemberLight } from '@app/shared/types/member';
|
||||
import pool from '../../db';
|
||||
import { Role, RoleSummary } from '@app/shared/types/roles'
|
||||
import { logger } from '../logging/logger';
|
||||
import { memberCache } from '../../routes/auth';
|
||||
|
||||
export async function assignUserGroup(userID: number, roleID: number) {
|
||||
const sql = `INSERT INTO members_roles (member_id, role_id) VALUES (?, ?);`;
|
||||
const params = [userID, roleID];
|
||||
try {
|
||||
const sql = `INSERT INTO members_roles (member_id, role_id) VALUES (?, ?);`;
|
||||
const params = [userID, roleID];
|
||||
|
||||
return await pool.query(sql, params);
|
||||
return await pool.query(sql, params);
|
||||
} catch (error) {
|
||||
logger.error('app', 'Failed to assign user group', error);
|
||||
} finally {
|
||||
memberCache.Invalidate(userID);
|
||||
}
|
||||
}
|
||||
|
||||
export async function createGroup(name: string, color: string, description: string) {
|
||||
|
||||
Reference in New Issue
Block a user