/
delete-entities-cached-script-set.ts
35 lines (31 loc) · 1.14 KB
/
delete-entities-cached-script-set.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
import { PersistencyDeleteOptions } from '../options/persistency-delete-options';
import { RedisCachedScript } from './redis-cached-script';
import { RedisCachedScriptSet } from './redis-cached-script-set';
export class DeleteEntitiesCachedScriptSet implements RedisCachedScriptSet<PersistencyDeleteOptions> {
/**
* Map of keys to redis cached scripts.
*/
protected _scripts: [RedisCachedScript, RedisCachedScript];
/**
* RedisCachedScript generator.
*/
protected _generator: (mode: PersistencyDeleteOptions) => RedisCachedScript;
/**
* Creates a new Redis cached script set by cache mode.
* @param generator Cached script generator.
*/
public constructor(generator: (mode: PersistencyDeleteOptions) => RedisCachedScript) {
this._scripts = [null, null];
this._generator = generator;
}
/**
* @inheritdoc
*/
public eval(gArgs: PersistencyDeleteOptions, eArgsGen: (scriptArg: string) => any[]): Promise<any> {
const index = gArgs.negativeCache ? 1 : 0;
if (null == this._scripts[index]) {
this._scripts[index] = this._generator(gArgs);
}
return this._scripts[index].eval(eArgsGen);
}
}