@mulingai-npm/redis 1.2.6 → 1.2.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
|
@@ -16,6 +16,7 @@ export declare class MulingstreamListenerManager {
|
|
|
16
16
|
addListener(listenerData: Omit<MulingstreamListenerData, 'listenerId'>): Promise<string>;
|
|
17
17
|
getAllListeners(): Promise<MulingstreamListenerData[]>;
|
|
18
18
|
getListenersByRoom(roomId: string): Promise<MulingstreamListenerData[]>;
|
|
19
|
-
|
|
19
|
+
getListener(listenerIdOrToken: string): Promise<MulingstreamListenerData | null>;
|
|
20
20
|
removeListenerByToken(token: string): Promise<boolean>;
|
|
21
|
+
updateNameLanguage(listenerIdOrToken: string, name: string, language: string): Promise<boolean>;
|
|
21
22
|
}
|
|
@@ -71,28 +71,28 @@ class MulingstreamListenerManager {
|
|
|
71
71
|
}
|
|
72
72
|
return listeners;
|
|
73
73
|
}
|
|
74
|
-
async
|
|
75
|
-
//
|
|
74
|
+
async getListener(listenerIdOrToken) {
|
|
75
|
+
// try direct lookup by listenerId:
|
|
76
|
+
const directData = await this.redisClient.hgetall(`listener:${listenerIdOrToken}`);
|
|
77
|
+
if (directData && directData.listenerId) {
|
|
78
|
+
return this.parseHashData(directData);
|
|
79
|
+
}
|
|
80
|
+
// if not found by listenerId, treat 'listenerIdOrToken' as a token and scan all listeners
|
|
76
81
|
const keys = await this.redisClient.keys('listener:*');
|
|
77
82
|
if (!keys || keys.length === 0) {
|
|
78
83
|
return null;
|
|
79
84
|
}
|
|
80
|
-
// for each key, fetch the hash from Redis
|
|
81
85
|
for (const key of keys) {
|
|
82
86
|
const data = await this.redisClient.hgetall(key);
|
|
83
|
-
|
|
84
|
-
// compare the token field
|
|
85
|
-
if (data && data.token === token) {
|
|
86
|
-
// if match, return the parsed data
|
|
87
|
+
if (data && data.token === listenerIdOrToken) {
|
|
87
88
|
return this.parseHashData(data);
|
|
88
89
|
}
|
|
89
90
|
}
|
|
90
|
-
// if not found, return null
|
|
91
91
|
return null;
|
|
92
92
|
}
|
|
93
93
|
async removeListenerByToken(token) {
|
|
94
94
|
// find the listener by token
|
|
95
|
-
const listener = await this.
|
|
95
|
+
const listener = await this.getListener(token);
|
|
96
96
|
if (!listener) {
|
|
97
97
|
return false;
|
|
98
98
|
}
|
|
@@ -102,5 +102,17 @@ class MulingstreamListenerManager {
|
|
|
102
102
|
await this.redisClient.del(`listener:${listener.listenerId}`);
|
|
103
103
|
return true;
|
|
104
104
|
}
|
|
105
|
+
async updateNameLanguage(listenerIdOrToken, name, language) {
|
|
106
|
+
const listener = await this.getListener(listenerIdOrToken);
|
|
107
|
+
if (!listener) {
|
|
108
|
+
return false;
|
|
109
|
+
}
|
|
110
|
+
// Update the name/language on the listener’s hash key
|
|
111
|
+
await this.redisClient.hset(`listener:${listener.listenerId}`, {
|
|
112
|
+
name,
|
|
113
|
+
language
|
|
114
|
+
});
|
|
115
|
+
return true;
|
|
116
|
+
}
|
|
105
117
|
}
|
|
106
118
|
exports.MulingstreamListenerManager = MulingstreamListenerManager;
|