llama1's picture
Upload 781 files
5da4770 verified
import { IApiClient, IVersionRepository } from '../repositories/interfaces';
import { IVersionService, VersionService } from '../services/version-service';
import { SupabaseApiClient } from './api-client';
import { ApiVersionRepository } from './version-repository';
export class DependencyContainer {
private static instance: DependencyContainer;
private apiClient?: IApiClient;
private versionRepository?: IVersionRepository;
private versionService?: IVersionService;
private constructor() {}
static getInstance(): DependencyContainer {
if (!DependencyContainer.instance) {
DependencyContainer.instance = new DependencyContainer();
}
return DependencyContainer.instance;
}
getApiClient(): IApiClient {
if (!this.apiClient) {
this.apiClient = new SupabaseApiClient();
}
return this.apiClient;
}
getVersionRepository(): IVersionRepository {
if (!this.versionRepository) {
this.versionRepository = new ApiVersionRepository(this.getApiClient());
}
return this.versionRepository;
}
getVersionService(): IVersionService {
if (!this.versionService) {
this.versionService = new VersionService(this.getVersionRepository());
}
return this.versionService;
}
reset(): void {
this.apiClient = undefined;
this.versionRepository = undefined;
this.versionService = undefined;
}
}
export const container = DependencyContainer.getInstance();