From 9acb5be7e6c0d72d9b265e55318904366384319e Mon Sep 17 00:00:00 2001 From: Hatry1337 Date: Wed, 26 Apr 2023 02:59:19 +0300 Subject: [PATCH] Fix mismatching order in associations map --- src/Models/StorageUser.ts | 4 ++-- src/Structures/User.ts | 6 +++--- src/UnifiedId.ts | 2 ++ src/UserManager.ts | 34 +++++++++++++++++----------------- src/index.ts | 7 +++++-- 5 files changed, 29 insertions(+), 24 deletions(-) diff --git a/src/Models/StorageUser.ts b/src/Models/StorageUser.ts index bbaf0b4..143783b 100644 --- a/src/Models/StorageUser.ts +++ b/src/Models/StorageUser.ts @@ -1,7 +1,7 @@ import { Column, DataType, HasOne, Model, Table } from "sequelize-typescript"; import { StorageUserDiscordInfo } from "./StorageUserDiscordInfo"; import { StorageUserEconomyInfo } from "./StorageUserEconomyInfo"; -import { UnifiedId, UnifiedIdDataType } from "../UnifiedId"; +import { UnifiedId, UnifiedIdDataType, UnifiedIdString } from "../UnifiedId"; interface StorageUserMeta{ } @@ -17,7 +17,7 @@ export class StorageUser extends Model { primaryKey: true, defaultValue: () => UnifiedId.generate(UnifiedIdDataType.User).toString(16) }) - declare unifiedId: string; + declare unifiedId: UnifiedIdString; @Column({ type: DataType.STRING, diff --git a/src/Structures/User.ts b/src/Structures/User.ts index 3ea9ac6..c839b41 100644 --- a/src/Structures/User.ts +++ b/src/Structures/User.ts @@ -1,5 +1,5 @@ import Discord from "discord.js"; -import { Access, AccessTarget } from ".."; +import { Access, AccessTarget, UnifiedIdString } from ".."; import Synergy from "../Synergy"; import { StorageUser } from "../Models/StorageUser"; @@ -19,7 +19,7 @@ export interface UserDiscordOptions { } export interface UserOptions{ - unifiedId: string; + unifiedId: UnifiedIdString; nickname: string; groups: string[]; lang: string; @@ -28,7 +28,7 @@ export interface UserOptions{ } export default class User implements UserOptions{ - public unifiedId: string; + public unifiedId: UnifiedIdString; public nickname: string; public groups: string[]; public lang: string; diff --git a/src/UnifiedId.ts b/src/UnifiedId.ts index a5d0c02..1bcf0ae 100644 --- a/src/UnifiedId.ts +++ b/src/UnifiedId.ts @@ -35,6 +35,8 @@ export enum UnifiedIdDataType { OtherChannel = 5, } +export type UnifiedIdString = string; + export class UnifiedId { private static increment = 0; public static generate(dataType: UnifiedIdDataType = UnifiedIdDataType.AnyData, milliseconds?: number, increment?: number) { diff --git a/src/UserManager.ts b/src/UserManager.ts index 9992bf0..334239f 100644 --- a/src/UserManager.ts +++ b/src/UserManager.ts @@ -9,12 +9,12 @@ import { StorageUser } from "./Models/StorageUser"; import { GlobalLogger } from "./GlobalLogger"; import Synergy from "./Synergy"; import User, { UserOptions } from "./Structures/User"; -import { Access } from "."; +import { Access, UnifiedIdString } from "."; import { UserAlreadyExistError } from "./Structures/Errors"; import CachedManager from "./Structures/CachedManager"; export default class UserManager extends CachedManager{ - private discordIdsAssociations: Map = new Map(); + private discordIdsAssociations: Map = new Map(); constructor(public bot: Synergy){ super(); this.cacheStorage.on("del", this.onCacheEntryDeleted.bind(this)); @@ -22,18 +22,18 @@ export default class UserManager extends CachedManager{ /** * Get unified User id from Discord id - * @param unifiedId + * @param discordId */ - public unifiedIdFromDiscordId(unifiedId: string): string | undefined{ - return this.discordIdsAssociations.get(unifiedId); + public unifiedIdFromDiscordId(discordId: Discord.Snowflake): UnifiedIdString | undefined{ + return this.discordIdsAssociations.get(discordId); } /** * Get User Discord id from unified id - * @param discordId + * @param unifiedId */ - public discordIdFromUnifiedId(discordId: string): string | undefined { - let entry = Array.from(this.discordIdsAssociations.entries()).find(e => e[1] === discordId); + public discordIdFromUnifiedId(unifiedId: UnifiedIdString): Discord.Snowflake | undefined { + let entry = Array.from(this.discordIdsAssociations.entries()).find(e => e[1] === unifiedId); if(entry) { return entry[0]; } @@ -43,7 +43,7 @@ export default class UserManager extends CachedManager{ * Fetches User from storage * @param id Unified id of user to fetch */ - public async fetchOne(id: string): Promise { + public async fetchOne(id: UnifiedIdString): Promise { let storageUser = await StorageUser.findOne({ where: { unifiedId: id @@ -60,7 +60,7 @@ export default class UserManager extends CachedManager{ this.cacheStorage.set(id, user); if(user.discord) { - this.discordIdsAssociations.set(user.unifiedId, user.discord.id); + this.discordIdsAssociations.set(user.discord.id, user.unifiedId); } return user; } @@ -69,7 +69,7 @@ export default class UserManager extends CachedManager{ * Fetches multiple Users from storage * @param ids Unified ids of users to fetch */ - public async fetchBulk(ids: string[]) { + public async fetchBulk(ids: UnifiedIdString[]) { let res: Map = new Map(); let storageUsers = await StorageUser.findAll({ @@ -87,7 +87,7 @@ export default class UserManager extends CachedManager{ this.cacheStorage.set(user.unifiedId, user); if(user.discord) { - this.discordIdsAssociations.set(user.unifiedId, user.discord.id); + this.discordIdsAssociations.set(user.discord.id, user.unifiedId); } res.set(user.unifiedId, user); } @@ -98,7 +98,7 @@ export default class UserManager extends CachedManager{ if(!user) continue; this.cacheStorage.set(user.unifiedId, user); if(user.discord) { - this.discordIdsAssociations.set(user.unifiedId, user.discord.id); + this.discordIdsAssociations.set(user.discord.id, user.unifiedId); } res.set(user.unifiedId, user); } @@ -126,7 +126,7 @@ export default class UserManager extends CachedManager{ this.cacheStorage.set(user.unifiedId, user); if(user.discord) { - this.discordIdsAssociations.set(user.unifiedId, user.discord.id); + this.discordIdsAssociations.set(user.discord.id, user.unifiedId); } return user; } @@ -147,11 +147,11 @@ export default class UserManager extends CachedManager{ }, system); user.bindDiscord(dUser); - this.discordIdsAssociations.set(user.unifiedId, dUser.id); + this.discordIdsAssociations.set(dUser.id, user.unifiedId); return user; } - public async forceStorageUpdate(unifiedId: string, transaction?: Transaction) { + public async forceStorageUpdate(unifiedId: UnifiedIdString, transaction?: Transaction) { let user = await this.get(unifiedId); if(!user) return; @@ -216,7 +216,7 @@ export default class UserManager extends CachedManager{ await super.destroy(); } - private async onCacheEntryDeleted(unifiedId: string, user: User) { + private async onCacheEntryDeleted(unifiedId: UnifiedIdString, user: User) { await this.forceStorageUpdate(unifiedId); } } \ No newline at end of file diff --git a/src/index.ts b/src/index.ts index 23da7b7..7c0d0c8 100644 --- a/src/index.ts +++ b/src/index.ts @@ -38,7 +38,7 @@ import { dataStructureToString } from "./ConfigManager/ConfigDataStructures" import { ConfigCommonDataType, TypeOfConfigDataType } from "./ConfigManager/ConfigDataTypes" -import { UnifiedId } from "./UnifiedId" +import { RainbowBOTEpoch, UnifiedId, UnifiedIdDataType, UnifiedIdString } from "./UnifiedId" export { Guild, @@ -112,5 +112,8 @@ export { NoConfigEntryError, MissingPermissionsError, - UnifiedId + UnifiedId, + RainbowBOTEpoch, + UnifiedIdDataType, + UnifiedIdString } \ No newline at end of file