refactor(media): migrate binders to wireUseCase for all 3 use cases
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -6,7 +6,10 @@ import {
|
||||
type ILogger,
|
||||
} from "@repo/core-shared/instrumentation";
|
||||
import type { BindContext } from "@repo/core-shared/di";
|
||||
import { assertFeatureConformance } from "@repo/core-shared/conformance";
|
||||
import {
|
||||
assertFeatureConformance,
|
||||
wireUseCase,
|
||||
} from "@repo/core-shared/conformance";
|
||||
import { mediaManifest } from "../feature.manifest.js";
|
||||
import { mediaContainer } from "./container.js";
|
||||
import { MEDIA_SYMBOLS } from "./symbols.js";
|
||||
@@ -60,54 +63,48 @@ export async function bindDevSeedMedia(ctx: BindContext): Promise<void> {
|
||||
.bind<IMediaRepository>(MEDIA_SYMBOLS.IMediaRepository)
|
||||
.toConstantValue(repo);
|
||||
|
||||
// Wrap use cases + controllers identically to bind-production
|
||||
const wrappedGetMedia = withSpan(
|
||||
// Use cases
|
||||
const wrappedGetMedia = wireUseCase({
|
||||
container: mediaContainer,
|
||||
symbol: MEDIA_SYMBOLS.IGetMediaUseCase,
|
||||
factory: getMediaUseCase,
|
||||
deps: [repo],
|
||||
feature: "media",
|
||||
layer: "use-case",
|
||||
name: "getMedia",
|
||||
tracer,
|
||||
{ name: "media.getMedia", op: "use-case" },
|
||||
withCapture(
|
||||
logger,
|
||||
{ feature: "media", layer: "use-case", name: "media.getMedia" },
|
||||
getMediaUseCase(repo),
|
||||
),
|
||||
);
|
||||
const wrappedListMedia = withSpan(
|
||||
logger,
|
||||
});
|
||||
const wrappedListMedia = wireUseCase({
|
||||
container: mediaContainer,
|
||||
symbol: MEDIA_SYMBOLS.IListMediaUseCase,
|
||||
factory: listMediaUseCase,
|
||||
deps: [repo],
|
||||
feature: "media",
|
||||
layer: "use-case",
|
||||
name: "listMedia",
|
||||
tracer,
|
||||
{ name: "media.listMedia", op: "use-case" },
|
||||
withCapture(
|
||||
logger,
|
||||
{ feature: "media", layer: "use-case", name: "media.listMedia" },
|
||||
listMediaUseCase(repo),
|
||||
),
|
||||
);
|
||||
const wrappedDeleteMedia = withSpan(
|
||||
logger,
|
||||
});
|
||||
const wrappedDeleteMedia = wireUseCase({
|
||||
container: mediaContainer,
|
||||
symbol: MEDIA_SYMBOLS.IDeleteMediaUseCase,
|
||||
factory: deleteMediaUseCase,
|
||||
deps: [repo],
|
||||
feature: "media",
|
||||
layer: "use-case",
|
||||
name: "deleteMedia",
|
||||
tracer,
|
||||
{ name: "media.deleteMedia", op: "use-case" },
|
||||
withCapture(
|
||||
logger,
|
||||
{ feature: "media", layer: "use-case", name: "media.deleteMedia" },
|
||||
deleteMediaUseCase(repo),
|
||||
),
|
||||
);
|
||||
logger,
|
||||
});
|
||||
|
||||
for (const sym of [
|
||||
MEDIA_SYMBOLS.IGetMediaUseCase,
|
||||
MEDIA_SYMBOLS.IListMediaUseCase,
|
||||
MEDIA_SYMBOLS.IDeleteMediaUseCase,
|
||||
MEDIA_SYMBOLS.IGetMediaController,
|
||||
MEDIA_SYMBOLS.IListMediaController,
|
||||
MEDIA_SYMBOLS.IDeleteMediaController,
|
||||
]) {
|
||||
if (mediaContainer.isBound(sym)) mediaContainer.unbind(sym);
|
||||
}
|
||||
mediaContainer
|
||||
.bind(MEDIA_SYMBOLS.IGetMediaUseCase)
|
||||
.toConstantValue(wrappedGetMedia);
|
||||
mediaContainer
|
||||
.bind(MEDIA_SYMBOLS.IListMediaUseCase)
|
||||
.toConstantValue(wrappedListMedia);
|
||||
mediaContainer
|
||||
.bind(MEDIA_SYMBOLS.IDeleteMediaUseCase)
|
||||
.toConstantValue(wrappedDeleteMedia);
|
||||
|
||||
mediaContainer
|
||||
.bind(MEDIA_SYMBOLS.IGetMediaController)
|
||||
|
||||
@@ -6,7 +6,10 @@ import {
|
||||
type ILogger,
|
||||
} from "@repo/core-shared/instrumentation";
|
||||
import type { BindProductionContext } from "@repo/core-shared/di";
|
||||
import { assertFeatureConformance } from "@repo/core-shared/conformance";
|
||||
import {
|
||||
assertFeatureConformance,
|
||||
wireUseCase,
|
||||
} from "@repo/core-shared/conformance";
|
||||
import { mediaContainer } from "./container";
|
||||
import { MEDIA_SYMBOLS } from "./symbols";
|
||||
import { mediaManifest } from "../feature.manifest";
|
||||
@@ -43,51 +46,40 @@ export function bindProductionMedia(ctx: BindProductionContext): void {
|
||||
const repo = new MediaRepository(config, tracer, logger);
|
||||
mediaContainer.bind(MEDIA_SYMBOLS.IMediaRepository).toConstantValue(repo);
|
||||
|
||||
// Use cases — wrapped with span + capture at bind time
|
||||
const wrappedGetMedia = withSpan(
|
||||
// Use cases
|
||||
const wrappedGetMedia = wireUseCase({
|
||||
container: mediaContainer,
|
||||
symbol: MEDIA_SYMBOLS.IGetMediaUseCase,
|
||||
factory: getMediaUseCase,
|
||||
deps: [repo],
|
||||
feature: "media",
|
||||
layer: "use-case",
|
||||
name: "getMedia",
|
||||
tracer,
|
||||
{ name: "media.getMedia", op: "use-case" },
|
||||
withCapture(
|
||||
logger,
|
||||
{ feature: "media", layer: "use-case", name: "media.getMedia" },
|
||||
getMediaUseCase(repo),
|
||||
),
|
||||
);
|
||||
const wrappedListMedia = withSpan(
|
||||
logger,
|
||||
});
|
||||
const wrappedListMedia = wireUseCase({
|
||||
container: mediaContainer,
|
||||
symbol: MEDIA_SYMBOLS.IListMediaUseCase,
|
||||
factory: listMediaUseCase,
|
||||
deps: [repo],
|
||||
feature: "media",
|
||||
layer: "use-case",
|
||||
name: "listMedia",
|
||||
tracer,
|
||||
{ name: "media.listMedia", op: "use-case" },
|
||||
withCapture(
|
||||
logger,
|
||||
{ feature: "media", layer: "use-case", name: "media.listMedia" },
|
||||
listMediaUseCase(repo),
|
||||
),
|
||||
);
|
||||
const wrappedDeleteMedia = withSpan(
|
||||
logger,
|
||||
});
|
||||
const wrappedDeleteMedia = wireUseCase({
|
||||
container: mediaContainer,
|
||||
symbol: MEDIA_SYMBOLS.IDeleteMediaUseCase,
|
||||
factory: deleteMediaUseCase,
|
||||
deps: [repo],
|
||||
feature: "media",
|
||||
layer: "use-case",
|
||||
name: "deleteMedia",
|
||||
tracer,
|
||||
{ name: "media.deleteMedia", op: "use-case" },
|
||||
withCapture(
|
||||
logger,
|
||||
{ feature: "media", layer: "use-case", name: "media.deleteMedia" },
|
||||
deleteMediaUseCase(repo),
|
||||
),
|
||||
);
|
||||
|
||||
for (const sym of [
|
||||
MEDIA_SYMBOLS.IGetMediaUseCase,
|
||||
MEDIA_SYMBOLS.IListMediaUseCase,
|
||||
MEDIA_SYMBOLS.IDeleteMediaUseCase,
|
||||
]) {
|
||||
if (mediaContainer.isBound(sym)) mediaContainer.unbind(sym);
|
||||
}
|
||||
mediaContainer
|
||||
.bind(MEDIA_SYMBOLS.IGetMediaUseCase)
|
||||
.toConstantValue(wrappedGetMedia);
|
||||
mediaContainer
|
||||
.bind(MEDIA_SYMBOLS.IListMediaUseCase)
|
||||
.toConstantValue(wrappedListMedia);
|
||||
mediaContainer
|
||||
.bind(MEDIA_SYMBOLS.IDeleteMediaUseCase)
|
||||
.toConstantValue(wrappedDeleteMedia);
|
||||
logger,
|
||||
});
|
||||
|
||||
// Controllers — wrapped with span at bind time
|
||||
for (const sym of [
|
||||
|
||||
Reference in New Issue
Block a user