Add bull and caching
This commit is contained in:
@@ -1,4 +1,4 @@
|
||||
import { Injectable } from '@nestjs/common';
|
||||
import { Injectable, Logger } from '@nestjs/common';
|
||||
import { UploadedObjectInfo } from 'minio';
|
||||
import { MinioService } from 'src/minio/minio.service';
|
||||
|
||||
@@ -8,6 +8,7 @@ export class KvService {
|
||||
private readonly kvPrefix = 'kv';
|
||||
private readonly kvMetadataFileName = 'metadata.json';
|
||||
private readonly kvMetadataPath = `${this.kvPrefix}/${this.kvMetadataFileName}`;
|
||||
private readonly logger: Logger = new Logger(KvService.name);
|
||||
|
||||
constructor(private readonly minioService: MinioService) {}
|
||||
|
||||
@@ -46,6 +47,7 @@ export class KvService {
|
||||
}
|
||||
metadata[namespace].secretKey = this.generateSecretKey();
|
||||
await this.setMetadataFile(Buffer.from(JSON.stringify(metadata)));
|
||||
this.logger.verbose(`Rotated secret key for ${namespace}`);
|
||||
return metadata[namespace];
|
||||
}
|
||||
|
||||
@@ -114,6 +116,7 @@ export class KvService {
|
||||
claimed: new Date().toISOString(),
|
||||
};
|
||||
await this.setMetadataFile(Buffer.from(JSON.stringify(metadata)));
|
||||
this.logger.verbose(`Claimed namespace ${namespace}`);
|
||||
return metadata[namespace];
|
||||
}
|
||||
|
||||
@@ -135,6 +138,7 @@ export class KvService {
|
||||
if (metadata[namespace]?.secretKey !== secretKey) {
|
||||
throw new Error('Incorrect secret key for namespace');
|
||||
}
|
||||
this.logger.verbose(`Setting ${namespace}/${key}`);
|
||||
return await this.minioService.uploadBuffer(
|
||||
this.kvBucketName,
|
||||
this.generateFilePath(namespace, key),
|
||||
@@ -148,6 +152,7 @@ export class KvService {
|
||||
}
|
||||
|
||||
public async delete(namespace: string, key: string): Promise<void> {
|
||||
this.logger.verbose(`Deleting ${namespace}/${key}`);
|
||||
await this.minioService.deleteObject(
|
||||
this.kvBucketName,
|
||||
this.generateFilePath(namespace, key),
|
||||
@@ -167,10 +172,12 @@ export class KvService {
|
||||
if (metadata[namespace]?.secretKey !== secretKey) {
|
||||
throw new Error('Incorrect secret key for namespace');
|
||||
}
|
||||
return await this.minioService.generatePresignedUrl(
|
||||
const presignedUrl = await this.minioService.generatePresignedUrl(
|
||||
this.kvBucketName,
|
||||
this.generateFilePath(namespace, key),
|
||||
expiry,
|
||||
);
|
||||
this.logger.verbose(`Generated presigned URL for ${namespace}/${key}`);
|
||||
return presignedUrl;
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user