Files
safe-redis-leader/src/atomicGetIsEqualDelete.ts
2021-07-15 16:52:03 +00:00

28 lines
731 B
TypeScript

import { readFile as fsReadFile } from "fs";
import IORedis from "ioredis";
import { promisify } from "util";
const readFile = promisify(fsReadFile);
type getIsEqualDeleteType = {
getIsEqualDelete?: (key: IORedis.KeyType, id: string) => Promise<boolean>;
};
export async function atomicGetIsEqualDelete(
asyncRedis: IORedis.Redis & getIsEqualDeleteType,
key: IORedis.KeyType,
id: string,
): Promise<boolean> {
if (!asyncRedis.getIsEqualDelete) {
const file = await readFile(`${__dirname}/../luas/atomicGetIsEqualDelete.lua`, "utf8");
asyncRedis.defineCommand("getIsEqualDelete", {
numberOfKeys: 1,
lua: file,
});
}
const res = await asyncRedis.getIsEqualDelete!(key, id);
return res;
}