import events from "node:events"; import type {Adapter} from "../../adapter"; import type Database from "../database"; // biome-ignore lint/suspicious/noExplicitAny: API type EventMap = Record | DefaultEventMap; type DefaultEventMap = [never]; export abstract class Entity = DefaultEventMap> extends events.EventEmitter { protected static databases: Map = new Map(); protected static adapters: Map = new Map(); public static injectDatabase(database: Database): void { Entity.databases.set(database.id, database); } public static injectAdapter(databaseID: number, adapter: Adapter): void { Entity.adapters.set(databaseID, adapter); } public static removeDatabase(databaseID: number): void { Entity.databases.delete(databaseID); } public static removeAdapter(databaseID: number): void { Entity.adapters.delete(databaseID); } public static getAdapterByID(id: number): Adapter | undefined { return Entity.adapters.get(id); } public static databaseIDExists(id: number): boolean { return Entity.databases.get(id) !== undefined; } public static getDatabaseByID(id: number): Database | undefined { return Entity.databases.get(id); } } export default Entity;