feat(media): add MediaAsset model, MediaRepository contract, mock IndexedDB adapter
Some checks failed
Architecture Governance / architecture (push) Has been cancelled

Implements ADR-0002. MediaRepository is an abstract-class DI token (matching
the Ed25519VerificationService pattern in app.config.ts) bound to
MockMediaRepository, an IndexedDB-backed implementation storing blobs
directly with lazily-created/revoked object URLs. Swapping to a real
HttpMediaRepository later is a one-line provider change.

No UI yet (Sprint 4 Task 3).
This commit is contained in:
sdarbinyan
2026-07-15 04:58:20 +04:00
parent b75e753d98
commit c663c9099c
4 changed files with 219 additions and 0 deletions

View File

@@ -11,6 +11,8 @@ import { adminAuthHeadersInterceptor } from './core/admin-auth/admin-auth-header
import { Ed25519VerificationService } from './core/admin-auth/ed25519-verification.model';
import { NoopEd25519VerificationService } from './core/admin-auth/noop-ed25519-verification.service';
import { provideServiceWorker } from '@angular/service-worker';
import { MediaRepository } from './core/media/media-repository';
import { MockMediaRepository } from './core/media/mock-media-repository.service';
export const appConfig: ApplicationConfig = {
providers: [
@@ -24,6 +26,7 @@ export const appConfig: ApplicationConfig = {
withInterceptors([mockDataInterceptor, apiBaseUrlInterceptor, apiHeadersInterceptor, adminAuthHeadersInterceptor, cacheInterceptor])
),
{ provide: Ed25519VerificationService, useClass: NoopEd25519VerificationService },
{ provide: MediaRepository, useClass: MockMediaRepository },
provideServiceWorker('ngsw-worker.js', {
enabled: !isDevMode(),
registrationStrategy: 'registerWhenStable:30000'