Skip to content
This repository has been archived by the owner on Aug 21, 2024. It is now read-only.

Commit

Permalink
Fix mismatching order in associations map
Browse files Browse the repository at this point in the history
  • Loading branch information
Hatry1337 committed Apr 25, 2023
1 parent 0cb9746 commit 9acb5be
Show file tree
Hide file tree
Showing 5 changed files with 29 additions and 24 deletions.
4 changes: 2 additions & 2 deletions src/Models/StorageUser.ts
Original file line number Diff line number Diff line change
@@ -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{
}
Expand All @@ -17,7 +17,7 @@ export class StorageUser extends Model<StorageUser> {
primaryKey: true,
defaultValue: () => UnifiedId.generate(UnifiedIdDataType.User).toString(16)
})
declare unifiedId: string;
declare unifiedId: UnifiedIdString;

@Column({
type: DataType.STRING,
Expand Down
6 changes: 3 additions & 3 deletions src/Structures/User.ts
Original file line number Diff line number Diff line change
@@ -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";

Expand All @@ -19,7 +19,7 @@ export interface UserDiscordOptions {
}

export interface UserOptions{
unifiedId: string;
unifiedId: UnifiedIdString;
nickname: string;
groups: string[];
lang: string;
Expand All @@ -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;
Expand Down
2 changes: 2 additions & 0 deletions src/UnifiedId.ts
Original file line number Diff line number Diff line change
Expand Up @@ -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) {
Expand Down
34 changes: 17 additions & 17 deletions src/UserManager.ts
Original file line number Diff line number Diff line change
Expand Up @@ -9,31 +9,31 @@ 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<User>{
private discordIdsAssociations: Map<string, Discord.Snowflake> = new Map();
private discordIdsAssociations: Map<Discord.Snowflake, UnifiedIdString> = new Map();
constructor(public bot: Synergy){
super();
this.cacheStorage.on("del", this.onCacheEntryDeleted.bind(this));
}

/**
* 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];
}
Expand All @@ -43,7 +43,7 @@ export default class UserManager extends CachedManager<User>{
* Fetches User from storage
* @param id Unified id of user to fetch
*/
public async fetchOne(id: string): Promise<User | undefined> {
public async fetchOne(id: UnifiedIdString): Promise<User | undefined> {
let storageUser = await StorageUser.findOne({
where: {
unifiedId: id
Expand All @@ -60,7 +60,7 @@ export default class UserManager extends CachedManager<User>{

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;
}
Expand All @@ -69,7 +69,7 @@ export default class UserManager extends CachedManager<User>{
* 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<string, User> = new Map();

let storageUsers = await StorageUser.findAll({
Expand All @@ -87,7 +87,7 @@ export default class UserManager extends CachedManager<User>{

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);
}
Expand All @@ -98,7 +98,7 @@ export default class UserManager extends CachedManager<User>{
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);
}
Expand Down Expand Up @@ -126,7 +126,7 @@ export default class UserManager extends CachedManager<User>{

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;
}
Expand All @@ -147,11 +147,11 @@ export default class UserManager extends CachedManager<User>{
}, 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;

Expand Down Expand Up @@ -216,7 +216,7 @@ export default class UserManager extends CachedManager<User>{
await super.destroy();
}

private async onCacheEntryDeleted(unifiedId: string, user: User) {
private async onCacheEntryDeleted(unifiedId: UnifiedIdString, user: User) {
await this.forceStorageUpdate(unifiedId);
}
}
7 changes: 5 additions & 2 deletions src/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -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,
Expand Down Expand Up @@ -112,5 +112,8 @@ export {
NoConfigEntryError,
MissingPermissionsError,

UnifiedId
UnifiedId,
RainbowBOTEpoch,
UnifiedIdDataType,
UnifiedIdString
}

0 comments on commit 9acb5be

Please sign in to comment.