From 3803c24cd809253289812f628029ea6cfb7fb593 Mon Sep 17 00:00:00 2001 From: Daniel Hatas <21317298+samson84@users.noreply.github.com> Date: Wed, 30 Oct 2024 20:08:14 +0100 Subject: [PATCH] add reference solution --- src/args.ts | 6 +++++- src/business/greeting-service.ts | 13 ++++++++++++- src/primary-adapters/args-input-primary-adapter.ts | 8 +++++++- .../fake-store-secondary-adapter.ts | 7 ++++++- 4 files changed, 30 insertions(+), 4 deletions(-) diff --git a/src/args.ts b/src/args.ts index 736575b..c974004 100644 --- a/src/args.ts +++ b/src/args.ts @@ -1,3 +1,7 @@ import { runArgsApp } from "./primary-adapters/args-input-primary-adapter"; import { FakeStoreSecondaryAdapter } from "./secondary-adapters/fake-store-secondary-adapter"; -import { GreetingService } from './business/greeting-service'; \ No newline at end of file +import { GreetingService } from './business/greeting-service'; + +const storeAdapter = new FakeStoreSecondaryAdapter() +const greetingService = new GreetingService(storeAdapter) +runArgsApp(greetingService) \ No newline at end of file diff --git a/src/business/greeting-service.ts b/src/business/greeting-service.ts index 96287b5..4416285 100644 --- a/src/business/greeting-service.ts +++ b/src/business/greeting-service.ts @@ -1,8 +1,19 @@ +export interface ProvideNamePrimaryPort { + greet: (name: string) => string +} + +export interface StoreGreetingSecondaryPort { + save: (greeting: string) => void +} + +export class GreetingService implements ProvideNamePrimaryPort { + + constructor(private readonly store: StoreGreetingSecondaryPort) {} -export class GreetingService { greet(name: string) { const greeting = `Hello, ${name}`; + this.store.save(greeting) return greeting; } } \ No newline at end of file diff --git a/src/primary-adapters/args-input-primary-adapter.ts b/src/primary-adapters/args-input-primary-adapter.ts index ae1bf1b..287cecf 100644 --- a/src/primary-adapters/args-input-primary-adapter.ts +++ b/src/primary-adapters/args-input-primary-adapter.ts @@ -1 +1,7 @@ -export function runArgsApp() {} \ No newline at end of file +import { ProvideNamePrimaryPort } from "../business/greeting-service"; + +export function runArgsApp(greetingService: ProvideNamePrimaryPort) { + const [,,name] = process.argv; + const greeting = greetingService.greet(name); + console.log(greeting); +} \ No newline at end of file diff --git a/src/secondary-adapters/fake-store-secondary-adapter.ts b/src/secondary-adapters/fake-store-secondary-adapter.ts index 7879897..c447821 100644 --- a/src/secondary-adapters/fake-store-secondary-adapter.ts +++ b/src/secondary-adapters/fake-store-secondary-adapter.ts @@ -1,3 +1,8 @@ -export class FakeStoreSecondaryAdapter { +import { StoreGreetingSecondaryPort } from "../business/greeting-service"; + +export class FakeStoreSecondaryAdapter implements StoreGreetingSecondaryPort { + save(name: string) { + console.log(`Saved: ${name}`); + } } \ No newline at end of file