import { Pool } from "mysql";
import { SnowflakeString } from "../types/snowflake";
import Animation from "./animation";
import Category from "./category";
import File from "./file";
import SystemRelation from "./systemRelation";
import User from "./user";
import UserClient from "./userClient";
import UserRelation from "./userRelation";
/**
* Handles data about a single request context.
*/
export class RequestContext {
public conn: Pool;
public client?: UserClient;
public user?: User;
public users: Map<SnowflakeString, User> = new Map();
public categories: Map<SnowflakeString, Category> = new Map();
public animations: Map<SnowflakeString, Animation> = new Map();
public files: Map<SnowflakeString, File> = new Map();
public systemRelations: Map<SnowflakeString, SystemRelation> = new Map();
public userRelation: Map<SnowflakeString, UserRelation> = new Map();
/**
* Creates request context instance
* @param {Pool} conn
*/
constructor(conn: Pool) {
this.conn = conn;
}
/**
* Checks if request context has client (mainly typescript)
* @return {boolean}
*/
public hasClient(): this is RequestContextWithClient {
return this.client !== undefined;
}
}
export interface RequestContextWithClient extends RequestContext {
client: UserClient;
}
Source