Skip to content

Commit

Permalink
IMN-659 IMN-673 IMN-674 eservice (#885)
Browse files Browse the repository at this point in the history
Co-authored-by: Sandro Tajè <[email protected]>
  • Loading branch information
MalpenZibo and sandrotaje authored Sep 12, 2024
1 parent 0cba067 commit c4e46a2
Show file tree
Hide file tree
Showing 3 changed files with 100 additions and 5 deletions.
16 changes: 16 additions & 0 deletions packages/bff/src/model/api/apiConverter.ts
Original file line number Diff line number Diff line change
Expand Up @@ -153,6 +153,22 @@ export function toTenantWithOnlyAttributes(
};
}

export function toCatalogCreateEServiceSeed(
eServiceSeed: bffApi.EServiceSeed
): catalogApi.EServiceSeed {
return {
...eServiceSeed,
descriptor: {
audience: [],
voucherLifespan: 60,
dailyCallsPerConsumer: 1,
dailyCallsTotal: 1,
agreementApprovalPolicy:
catalogApi.AgreementApprovalPolicy.Values.AUTOMATIC,
},
};
}

export function toCompactEserviceLight(
eservice: agreementApi.CompactEService
): bffApi.CompactEServiceLight {
Expand Down
50 changes: 45 additions & 5 deletions packages/bff/src/routers/catalogRouter.ts
Original file line number Diff line number Diff line change
Expand Up @@ -151,7 +151,6 @@ const catalogRouter = (
}
}
)
.post("/eservices", async (_req, res) => res.status(501).send())
.get("/eservices/:eServiceId/consumers", async (req, res) => {
const ctx = fromBffAppContext(req.ctx, req.headers);
try {
Expand Down Expand Up @@ -404,10 +403,51 @@ const catalogRouter = (
}
}
)
.delete("/eservices/:eServiceId", async (_req, res) =>
res.status(501).send()
)
.put("/eservices/:eServiceId", async (_req, res) => res.status(501).send())
.post("/eservices", async (req, res) => {
const ctx = fromBffAppContext(req.ctx, req.headers);
try {
const createdResource = await catalogService.createEService(
req.body,
ctx
);
return res.status(200).send(createdResource);
} catch (error) {
const errorRes = makeApiProblem(
error,
emptyErrorMapper,
ctx.logger,
`Error creating eservice with seed: ${req.body}`
);
return res.status(errorRes.status).json(errorRes).end();
}
})
.delete("/eservices/:eServiceId", async (req, res) => {
const ctx = fromBffAppContext(req.ctx, req.headers);
try {
await catalogService.deleteEService(
unsafeBrandId(req.params.eServiceId),
ctx
);
return res.status(204).send();
} catch (error) {
const errorRes = makeApiProblem(error, emptyErrorMapper, ctx.logger);
return res.status(errorRes.status).json(errorRes).end();
}
})
.put("/eservices/:eServiceId", async (req, res) => {
const ctx = fromBffAppContext(req.ctx, req.headers);
try {
const createdResource = await catalogService.updateEServiceById(
unsafeBrandId(req.params.eServiceId),
req.body,
ctx
);
return res.status(200).send(createdResource);
} catch (error) {
const errorRes = makeApiProblem(error, emptyErrorMapper, ctx.logger);
return res.status(errorRes.status).json(errorRes).end();
}
})
.post("/eservices/:eServiceId/riskAnalysis", async (req, res) => {
const ctx = fromBffAppContext(req.ctx, req.headers);
try {
Expand Down
39 changes: 39 additions & 0 deletions packages/bff/src/services/catalogService.ts
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@ import {
} from "pagopa-interop-models";
import { CreatedResource } from "../../../api-clients/dist/bffApi.js";
import { config } from "../config/config.js";
import { toCatalogCreateEServiceSeed } from "../model/api/apiConverter.js";
import { catalogApiDescriptorState } from "../model/api/apiTypes.js";
import {
toBffCatalogApiDescriptorAttributes,
Expand Down Expand Up @@ -330,6 +331,44 @@ export function catalogServiceBuilder(
id: updatedEservice.id,
};
},
createEService: async (
eServiceSeed: bffApi.EServiceSeed,
{ headers }: WithLogger<BffAppContext>
): Promise<bffApi.CreatedEServiceDescriptor> => {
const { id, descriptors } = await catalogProcessClient.createEService(
toCatalogCreateEServiceSeed(eServiceSeed),
{
headers,
}
);
return { id, descriptorId: descriptors[0].id };
},
updateEServiceById: async (
eServiceId: EServiceId,
updateEServiceSeed: bffApi.UpdateEServiceSeed,
{ headers }: WithLogger<BffAppContext>
): Promise<bffApi.CreatedResource> => {
const { id } = await catalogProcessClient.updateEServiceById(
updateEServiceSeed,
{
headers,
params: {
eServiceId,
},
}
);
return { id };
},
deleteEService: async (
eServiceId: EServiceId,
{ headers }: WithLogger<BffAppContext>
): Promise<void> =>
await catalogProcessClient.deleteEService(undefined, {
headers,
params: {
eServiceId,
},
}),
createEServiceDocument: async (
eServiceId: string,
descriptorId: string,
Expand Down

0 comments on commit c4e46a2

Please sign in to comment.