import { Logger, Module, OnModuleInit } from '@nestjs/common'; import { ModuleRegistryModule } from '../module-registry/module-registry.module'; import { ModuleRegistryService } from '../module-registry/module-registry.service'; import { NextcloudCallGate } from './nextcloud-call-gate'; import { NextcloudFilesController } from './nextcloud-files.controller'; import { seedNextcloudFilesModule } from './nextcloud-files.seed'; import { NextcloudFilesService } from './nextcloud-files.service'; import { NextcloudFilesAccountService } from './nextcloud-files-account.service'; import { defaultStatusFetcher, NEXTCLOUD_STATUS_FETCHER, NextcloudFilesSettingsService, } from './nextcloud-files-settings.service'; import { NEXTCLOUD_TRANSPORT, undiciTransport } from './nextcloud-http'; import { LoginFlowStore, NextcloudLoginGuard } from './nextcloud-login-guard'; /** * Modul "Dateien" (quick-261008-mzu): die Nextcloud-Dateien jedes Benutzers in * Tessera. Traegt sich beim Start in die Modulverwaltung ein; aktiviert wird per * Marktplatz. `CryptoService` kommt aus dem globalen `CryptoModule`, * `PrismaService` ist global. Die Aufrufsperre ist ein einziges Objekt fuer den * ganzen Prozess (alle Benutzer teilen die Server-Adresse gegenueber Nextcloud). */ @Module({ imports: [ModuleRegistryModule], controllers: [NextcloudFilesController], providers: [ NextcloudFilesSettingsService, NextcloudFilesAccountService, NextcloudFilesService, NextcloudLoginGuard, LoginFlowStore, NextcloudCallGate, { provide: NEXTCLOUD_TRANSPORT, useValue: undiciTransport }, { provide: NEXTCLOUD_STATUS_FETCHER, useValue: defaultStatusFetcher }, ], exports: [ NextcloudCallGate, NextcloudFilesSettingsService, NextcloudFilesAccountService, NEXTCLOUD_TRANSPORT, ], }) export class NextcloudFilesModule implements OnModuleInit { private readonly logger = new Logger(NextcloudFilesModule.name); constructor(private readonly moduleRegistryService: ModuleRegistryService) {} async onModuleInit(): Promise { try { await seedNextcloudFilesModule(this.moduleRegistryService); this.logger.log('Nextcloud files module seeded in registry'); } catch (error) { this.logger.error('Failed to seed nextcloud files module', error); } } }