Skip to content

Commit

Permalink
Feature/VL-280 (#8) - Implemented update & remove event stream
Browse files Browse the repository at this point in the history
* Implemented update & remove event stream

---------

Co-authored-by: CCTuduran <140727607+CCTuduran@users.noreply.github.com>
Co-authored-by: dennycarusonttdata <denny.caruso@nttdata.com>
Co-authored-by: Alexandru Daniel Iova <alexandrudaniel.iova@emeal.nttdata.com>
  • Loading branch information
4 people authored Sep 11, 2023
1 parent f7cbdfb commit 144a88f
Show file tree
Hide file tree
Showing 12 changed files with 495 additions and 74 deletions.
132 changes: 66 additions & 66 deletions package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 2 additions & 0 deletions src/adapters/http/application.ts
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@ import { makeListEventStreamRouter } from './listEventStream/router';
import { makeGetNotificationPriceRouter } from './getNotificationPrice/router';
import { makeDeleteEventStreamRouter } from './deleteEventStream/router';
import { makeGetEventStreamByIdRouter } from './getStreamById/router';
import { makeUpdateEventStreamRouter } from './updateEventStream/router';

export const makeApplication = (env: SystemEnv): express.Application => {
const app = express();
Expand All @@ -39,6 +40,7 @@ export const makeApplication = (env: SystemEnv): express.Application => {
app.use(makeGetNotificationPriceRouter(env));
app.use(makeDownloadDocumentRouter(env));
app.use(makeDeleteEventStreamRouter(env));
app.use(makeUpdateEventStreamRouter(env));
app.use(makeGetEventStreamByIdRouter(env));
return app;
};
Expand Down
9 changes: 4 additions & 5 deletions src/adapters/http/deleteEventStream/router.ts
Original file line number Diff line number Diff line change
@@ -1,11 +1,11 @@
import { constant, flow, pipe } from 'fp-ts/function';
import { flow, pipe } from 'fp-ts/function';
import * as Apply from 'fp-ts/Apply';
import * as E from 'fp-ts/Either';
import * as t from 'io-ts';
import * as TE from 'fp-ts/TaskEither';
import * as T from 'fp-ts/Task';
import express from 'express';
import { persistRecord } from '../../../useCases/PersistRecord';
import { deleteStreamRecord } from '../../../useCases/PersistRecord';
import { Handler, toExpressHandler } from '../Handler';
import { SystemEnv } from '../../../useCases/SystemEnv';
import { makeDeleteStreamRecord } from '../../../domain/DeleteStreamRecord';
Expand All @@ -19,12 +19,11 @@ const handler =
apiKey: t.string.decode(req.headers['x-api-key']),
streamId: t.string.decode(req.params.streamId),
}),
E.map(flow(makeDeleteStreamRecord(env), constant, persistRecord(env))),
// Create response
E.map(flow(makeDeleteStreamRecord(env), deleteStreamRecord(env))),
E.map(
TE.fold(
(_) => T.of(res.status(500).send(Problem.fromNumber(500))),
({ output }) => T.of(res.status(output.statusCode).send(output.returned))
(_) => T.of(res.status(204).send())
)
)
);
Expand Down
40 changes: 40 additions & 0 deletions src/adapters/http/updateEventStream/router.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
import { flow, pipe } from 'fp-ts/function';
import * as Apply from 'fp-ts/Apply';
import * as E from 'fp-ts/Either';
import * as t from 'io-ts';
import * as TE from 'fp-ts/TaskEither';
import * as T from 'fp-ts/Task';
import express from 'express';
import { traceWithValue } from 'fp-ts-std/Debug';
import { updateStreamRecordReturningOnlyTheOneUpdatedStream } from '../../../useCases/PersistRecord';
import { Handler, toExpressHandler } from '../Handler';
import { SystemEnv } from '../../../useCases/SystemEnv';
import * as Problem from '../Problem';
import { makeUpdateStreamRecord } from '../../../domain/UpdateStreamRecord';
import { StreamCreationRequest } from '../../../generated/streams/StreamCreationRequest';

const handler =
(env: SystemEnv): Handler =>
(req, res) =>
pipe(
Apply.sequenceS(E.Apply)({
apiKey: t.string.decode(req.headers['x-api-key']),
body: StreamCreationRequest.decode(req.body),
streamId: t.string.decode(req.params.streamId),
}),
E.map(flow(makeUpdateStreamRecord(env), traceWithValue("aaa: "), updateStreamRecordReturningOnlyTheOneUpdatedStream(env))),
E.map(
TE.fold(
(_) => T.of(res.status(404).send(Problem.fromNumber(404))),
({ output }) => T.of(res.status(output.statusCode).send(output.returned))
)
)
);

export const makeUpdateEventStreamRouter = (env: SystemEnv): express.Router => {
const router = express.Router();

router.put('/delivery-progresses/streams/:streamId', toExpressHandler(handler(env)));

return router;
};
Loading

0 comments on commit 144a88f

Please sign in to comment.