-
-
Notifications
You must be signed in to change notification settings - Fork 47
/
memory.store.ts
49 lines (39 loc) · 1.21 KB
/
memory.store.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
import { SessionStore } from "./store.interface.ts";
type StringKeyObject = { [key: string]: any };
/**
* Store for sessions in memory
*/
export class MemoryStore<T = StringKeyObject> implements SessionStore {
private sessionMap: Map<string, StringKeyObject> = new Map<
string,
StringKeyObject
>();
init(): Promise<void> {
this.sessionMap = new Map<string, StringKeyObject>();
return Promise.resolve();
}
create(sid: string): Promise<void> {
this.sessionMap!.set(sid, {});
return Promise.resolve();
}
delete(sid: string): Promise<void> {
this.sessionMap!.delete(sid);
return Promise.resolve();
}
get(sid: string): Promise<T | StringKeyObject | undefined> {
return Promise.resolve(this.sessionMap.get(sid));
}
exist(sid: string): Promise<boolean> {
return Promise.resolve(this.sessionMap.has(sid));
}
getValue(sid: string, key: [keyof T] | any): Promise<T> {
return Promise.resolve(this.sessionMap.get(sid)![key]);
}
setValue(sid: string, key: [keyof T] | any, value: any): Promise<void> {
this.sessionMap.get(sid)![key] = value;
return Promise.resolve();
}
clear(): Promise<void> {
return Promise.resolve(this.sessionMap.clear());
}
}