Skip to content

Commit 0c3963c

Browse files
authored
Merge pull request #3671 from LiteFarmOrg/LF-4694-create-get-endpoint-to-check-if-an-ensemble-addon-exists-b
Lf 4694 create get endpoint to check if an ensemble addon exists b
2 parents 3e4c4df + f8771a4 commit 0c3963c

File tree

3 files changed

+156
-124
lines changed

3 files changed

+156
-124
lines changed

packages/api/src/controllers/farmAddonController.js

Lines changed: 46 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -17,31 +17,56 @@ import FarmAddonModel from '../models/farmAddonModel.js';
1717
import { getValidEnsembleOrg } from '../util/ensemble.js';
1818

1919
const farmAddonController = {
20-
async addFarmAddon(req, res) {
21-
const { farm_id } = req.headers;
22-
const { addon_partner_id, org_uuid } = req.body;
20+
addFarmAddon() {
21+
return async (req, res) => {
22+
const { farm_id } = req.headers;
23+
const { addon_partner_id, org_uuid } = req.body;
2324

24-
try {
25-
const organisation = await getValidEnsembleOrg(org_uuid);
25+
try {
26+
const organisation = await getValidEnsembleOrg(org_uuid);
2627

27-
if (!organisation) {
28-
return res.status(404).send('Organisation not found');
29-
}
28+
if (!organisation) {
29+
return res.status(404).send('Organisation not found');
30+
}
3031

31-
await FarmAddonModel.upsertFarmAddon({
32-
farm_id,
33-
addon_partner_id,
34-
org_uuid,
35-
org_pk: organisation.pk,
36-
});
32+
await FarmAddonModel.upsertFarmAddon({
33+
farm_id,
34+
addon_partner_id,
35+
org_uuid,
36+
org_pk: organisation.pk,
37+
});
3738

38-
return res.status(200).send();
39-
} catch (error) {
40-
console.error(error);
41-
return res.status(error.status || 400).json({
42-
error: error.message || error,
43-
});
44-
}
39+
return res.status(200).send();
40+
} catch (error) {
41+
console.error(error);
42+
return res.status(error.status || 400).json({
43+
error: error.message || error,
44+
});
45+
}
46+
};
47+
},
48+
getFarmAddon() {
49+
return async (req, res) => {
50+
try {
51+
const { farm_id } = req.headers;
52+
const { addon_partner_id } = req.query;
53+
const rows = await FarmAddonModel.query()
54+
.where({ farm_id, addon_partner_id })
55+
.skipUndefined();
56+
if (!rows.length) {
57+
return res.sendStatus(404);
58+
}
59+
const result = rows.map(({ addon_partner_id, org_uuid }) => {
60+
return { addon_partner_id, org_uuid };
61+
});
62+
return res.status(200).send(result);
63+
} catch (error) {
64+
console.error(error);
65+
return res.status(500).json({
66+
error,
67+
});
68+
}
69+
};
4570
},
4671
};
4772

packages/api/src/routes/farmAddonRoute.js

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,9 @@ router.post(
2424
'/',
2525
checkScope(['add:farm_addon']),
2626
checkFarmAddon(),
27-
FarmAddonController.addFarmAddon,
27+
FarmAddonController.addFarmAddon(),
2828
);
2929

30+
router.get('/', checkScope(['get:farm_addon']), FarmAddonController.getFarmAddon());
31+
3032
export default router;

0 commit comments

Comments
 (0)