cloud-agnostic-storage
Version:
A package which enables cloud agnostic storage for a NodeJS project.
43 lines (31 loc) • 1.14 kB
text/typescript
import AWSCloudStorageService from "../services/AWSCloudStorageService";
import AzureCloudStorageService from "../services/AzureCloudStorageService";
import { CLOUD_PROVIDERS } from "../constants/CloudProviders";
import { CloudStorageConstructor } from "../models/CloudStorageService.models";
class ClassStorageRegistry {
private registry: Map<string, CloudStorageConstructor>;
constructor() {
this.registry = new Map();
}
registerCloudStorage(key: string, CloudStorageClass: any): void {
this.registry.set(key, CloudStorageClass);
return;
}
getCloudStorageClass(key: string): any {
const CloudStorageClass = this.registry.get(key);
if (!CloudStorageClass) {
throw new Error(`Configuration does not exist for: ${key}`);
}
return CloudStorageClass;
}
}
const cloudStorageRegistry = new ClassStorageRegistry();
cloudStorageRegistry.registerCloudStorage(
CLOUD_PROVIDERS.AWS,
AWSCloudStorageService
);
cloudStorageRegistry.registerCloudStorage(
CLOUD_PROVIDERS.AZURE,
AzureCloudStorageService
);
export default cloudStorageRegistry;