feat: complete cmpp platform phases 0-5
This commit is contained in:
@@ -0,0 +1,60 @@
|
||||
import { Injectable } from '@nestjs/common';
|
||||
import { Prisma } from '@prisma/client';
|
||||
import { PrismaService } from '../prisma/prisma.service';
|
||||
import { ObjectStorageService } from './object-storage.service';
|
||||
|
||||
export interface CreateFileObjectDto {
|
||||
tenantId?: string;
|
||||
bucket: string;
|
||||
objectKey: string;
|
||||
fileName: string;
|
||||
contentType: string;
|
||||
sizeBytes: number | string;
|
||||
checksum?: string;
|
||||
purpose: string;
|
||||
}
|
||||
|
||||
export interface CreatePresignedUploadDto {
|
||||
objectKey: string;
|
||||
expiresInSeconds?: number;
|
||||
}
|
||||
|
||||
@Injectable()
|
||||
export class FilesService {
|
||||
constructor(
|
||||
private readonly prisma: PrismaService,
|
||||
private readonly objectStorage: ObjectStorageService,
|
||||
) {}
|
||||
|
||||
list(tenantId?: string) {
|
||||
return this.prisma.fileObject.findMany({
|
||||
where: tenantId ? { tenantId } : undefined,
|
||||
orderBy: { createdAt: 'desc' },
|
||||
take: 100,
|
||||
});
|
||||
}
|
||||
|
||||
create(data: CreateFileObjectDto) {
|
||||
const createData: Prisma.FileObjectUncheckedCreateInput = {
|
||||
tenantId: data.tenantId,
|
||||
bucket: data.bucket,
|
||||
objectKey: data.objectKey,
|
||||
fileName: data.fileName,
|
||||
contentType: data.contentType,
|
||||
sizeBytes: BigInt(data.sizeBytes),
|
||||
checksum: data.checksum,
|
||||
purpose: data.purpose,
|
||||
};
|
||||
return this.prisma.fileObject.create({ data: createData });
|
||||
}
|
||||
|
||||
async createPresignedUpload(data: CreatePresignedUploadDto) {
|
||||
const uploadUrl = await this.objectStorage.presignedPutObject(data.objectKey, data.expiresInSeconds ?? 3600);
|
||||
return {
|
||||
bucket: this.objectStorage.getBucket(),
|
||||
objectKey: data.objectKey,
|
||||
uploadUrl,
|
||||
expiresInSeconds: data.expiresInSeconds ?? 3600,
|
||||
};
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user