48 lines
2.3 KiB
TypeScript
48 lines
2.3 KiB
TypeScript
/**
|
|||
|
|
* Dependency Injection container.
|
||
|
|
*
|
||
|
|
* Wires up singleton instances of all repositories and application services,
|
||
|
|
* making them available to controllers and other adapters without requiring
|
||
|
|
* a full DI framework.
|
||
|
|
*
|
||
|
|
* @module infrastructure/di
|
||
|
|
*/
|
||
|
|
|
||
|
|
import type { IBucketRepository } from '../domain/ports/bucket-repository';
|
||
|
|
import type { IFilePartRepository } from '../domain/ports/file-part-repository';
|
||
|
|
import type { IFileRepository } from '../domain/ports/file-repository';
|
||
|
|
import type { IMultipartRepository } from '../domain/ports/multipart-repository';
|
||
|
|
import type { ITelegramService } from '../domain/ports/telegram-service';
|
||
|
|
import { DrizzleBucketRepository } from './persistence/repositories/bucket-repository';
|
||
|
|
import { DrizzleFilePartRepository } from './persistence/repositories/file-part-repository';
|
||
|
|
import { DrizzleFileRepository } from './persistence/repositories/file-repository';
|
||
|
|
import { DrizzleMultipartRepository } from './persistence/repositories/multipart-repository';
|
||
|
|
import { botPool } from './telegram/bot-pool';
|
||
|
|
import { ChunkedStorage } from './telegram/chunked-storage';
|
||
|
|
|
||
|
|
// ─── Repository Singletons ──────────────────────────────────────────
|
||
|
|
|
||
|
|
/** Singleton IFileRepository instance backed by Drizzle ORM. */
|
||
|
|
export const fileRepository: IFileRepository = new DrizzleFileRepository();
|
||
|
|
|
||
|
|
/** Singleton IBucketRepository instance backed by Drizzle ORM. */
|
||
|
|
export const bucketRepository: IBucketRepository = new DrizzleBucketRepository();
|
||
|
|
|
||
|
|
/** Singleton IFilePartRepository instance backed by Drizzle ORM. */
|
||
|
|
export const filePartRepository: IFilePartRepository = new DrizzleFilePartRepository();
|
||
|
|
|
||
|
|
/** Singleton IMultipartRepository instance backed by Drizzle ORM. */
|
||
|
|
export const multipartRepository: IMultipartRepository = new DrizzleMultipartRepository();
|
||
|
|
|
||
|
|
/** Singleton ITelegramService instance backed by the bot pool. */
|
||
|
|
export const telegramService: ITelegramService = botPool;
|
||
|
|
|
||
|
|
// ─── Service Singletons ─────────────────────────────────────────────
|
||
|
|
|
||
|
|
/** Singleton ChunkedStorage for large file chunked uploads. */
|
||
|
|
export const chunkedStorage = new ChunkedStorage(
|
||
|
|
fileRepository,
|
||
|
|
filePartRepository,
|
||
|
|
telegramService,
|
||
|
|
);
|