Introduce repository pattern across multiple services, including `favorites`, `tags`, `sessions`, `reports`, `auth`, and more. Decouple crypto functionalities into modular services like `HashingService`, `JwtService`, and `EncryptionService`. Improve testability and maintainability by simplifying dependencies and consolidating utility logic.
40 lines
795 B
TypeScript
40 lines
795 B
TypeScript
import type { Readable } from "node:stream";
|
|
|
|
export interface IStorageService {
|
|
uploadFile(
|
|
fileName: string,
|
|
file: Buffer,
|
|
mimeType: string,
|
|
metaData?: Record<string, string>,
|
|
bucketName?: string,
|
|
): Promise<string>;
|
|
|
|
getFile(
|
|
fileName: string,
|
|
bucketName?: string,
|
|
): Promise<Readable>;
|
|
|
|
getFileUrl(
|
|
fileName: string,
|
|
expiry?: number,
|
|
bucketName?: string,
|
|
): Promise<string>;
|
|
|
|
getUploadUrl(
|
|
fileName: string,
|
|
expiry?: number,
|
|
bucketName?: string,
|
|
): Promise<string>;
|
|
|
|
deleteFile(fileName: string, bucketName?: string): Promise<void>;
|
|
|
|
getFileInfo(fileName: string, bucketName?: string): Promise<any>;
|
|
|
|
moveFile(
|
|
sourceFileName: string,
|
|
destinationFileName: string,
|
|
sourceBucketName?: string,
|
|
destinationBucketName?: string,
|
|
): Promise<string>;
|
|
}
|