aboutsummaryrefslogtreecommitdiff
path: root/src/services/key-value-cache.ts
diff options
context:
space:
mode:
Diffstat (limited to 'src/services/key-value-cache.ts')
-rw-r--r--src/services/key-value-cache.ts33
1 files changed, 26 insertions, 7 deletions
diff --git a/src/services/key-value-cache.ts b/src/services/key-value-cache.ts
index 7f1164d..bfe4f8c 100644
--- a/src/services/key-value-cache.ts
+++ b/src/services/key-value-cache.ts
@@ -1,5 +1,5 @@
import {injectable} from 'inversify';
-import {KeyValueCache} from '../models/index.js';
+import {prisma} from '../utils/db.js';
import debug from '../utils/debug.js';
type Seconds = number;
@@ -29,7 +29,11 @@ export default class KeyValueCacheProvider {
throw new Error(`Cache key ${key} is too short.`);
}
- const cachedResult = await KeyValueCache.findByPk(key);
+ const cachedResult = await prisma.keyValueCache.findUnique({
+ where: {
+ key,
+ },
+ });
if (cachedResult) {
if (new Date() < cachedResult.expiresAt) {
@@ -37,7 +41,11 @@ export default class KeyValueCacheProvider {
return JSON.parse(cachedResult.value) as F;
}
- await cachedResult.destroy();
+ await prisma.keyValueCache.delete({
+ where: {
+ key,
+ },
+ });
}
debug(`Cache miss: ${key}`);
@@ -45,10 +53,21 @@ export default class KeyValueCacheProvider {
const result = await func(...options as any[]);
// Save result
- await KeyValueCache.upsert({
- key,
- value: JSON.stringify(result),
- expiresAt: futureTimeToDate(expiresIn),
+ const value = JSON.stringify(result);
+ const expiresAt = futureTimeToDate(expiresIn);
+ await prisma.keyValueCache.upsert({
+ where: {
+ key,
+ },
+ update: {
+ value,
+ expiresAt,
+ },
+ create: {
+ key,
+ value,
+ expiresAt,
+ },
});
return result;