Skip to content

Commit 32c4b25

Browse files
epipavJoan Reyero
andauthored
EagleEye contents with actions (#483)
Co-authored-by: Joan Reyero <joan@crowd.dev>
1 parent a5b01df commit 32c4b25

37 files changed

Lines changed: 1380 additions & 937 deletions

backend/.env.dist.local

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -133,4 +133,8 @@ CROWD_QDRANT_PORT=6333
133133

134134
# Enrichment settings
135135
CROWD_ENRICHMENT_URL=
136-
CROWD_ENRICHMENT_API_KEY=
136+
CROWD_ENRICHMENT_API_KEY=
137+
138+
# EagleEye settings
139+
CROWD_EAGLE_EYE_URL=
140+
CROWD_EAGLE_EYE_API_KEY=

backend/config/custom-environment-variables.json

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -135,5 +135,9 @@
135135
"enrichment": {
136136
"url": "CROWD_ENRICHMENT_URL",
137137
"apiKey": "CROWD_ENRICHMENT_API_KEY"
138+
},
139+
"eagleEye": {
140+
"url": "CROWD_EAGLE_EYE_URL",
141+
"apiKey": "CROWD_EAGLE_EYE_API_KEY"
138142
}
139143
}

backend/config/default.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,5 +34,6 @@
3434
"maxRetrospectInSeconds": 3600
3535
},
3636
"github": {},
37-
"enrichment": {}
37+
"enrichment": {},
38+
"eagleEye": {}
3839
}
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
import Permissions from '../../security/permissions'
2+
import EagleEyeActionService from '../../services/eagleEyeActionService'
3+
import PermissionChecker from '../../services/user/permissionChecker'
4+
5+
export default async (req, res) => {
6+
new PermissionChecker(req).validateHas(Permissions.values.eagleEyeActionCreate)
7+
8+
const payload = await new EagleEyeActionService(req).create(req.body, req.params.contentId)
9+
10+
await req.responseHandler.success(req, res, payload)
11+
}
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
import Permissions from '../../security/permissions'
2+
import EagleEyeActionService from '../../services/eagleEyeActionService'
3+
import PermissionChecker from '../../services/user/permissionChecker'
4+
5+
export default async (req, res) => {
6+
new PermissionChecker(req).validateHas(Permissions.values.eagleEyeActionDestroy)
7+
8+
const payload = await new EagleEyeActionService(req).destroy(req.params.actionId)
9+
10+
await req.responseHandler.success(req, res, payload)
11+
}

backend/src/api/eagleEyeContent/eagleEyeContentList.ts

Lines changed: 0 additions & 17 deletions
This file was deleted.

backend/src/api/eagleEyeContent/eagleEyeContentSearch.ts

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -4,11 +4,9 @@ import EagleEyeContentService from '../../services/eagleEyeContentService'
44
import PermissionChecker from '../../services/user/permissionChecker'
55

66
export default async (req, res) => {
7-
new PermissionChecker(req).validateHas(Permissions.values.eagleEyeContentSearch)
8-
9-
const payload = await new EagleEyeContentService(req).search(req.body)
10-
11-
track('EagleEyeSearch', { ...req.body }, { ...req })
7+
new PermissionChecker(req).validateHas(Permissions.values.eagleEyeActionCreate)
128

9+
const payload = await new EagleEyeContentService(req).search()
10+
track('EagleEye backend search', { ...req.body }, { ...req })
1311
await req.responseHandler.success(req, res, payload)
1412
}

backend/src/api/eagleEyeContent/eagleEyeContentUpdate.ts renamed to backend/src/api/eagleEyeContent/eagleEyeContentUpsert.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,9 +3,9 @@ import EagleEyeContentService from '../../services/eagleEyeContentService'
33
import PermissionChecker from '../../services/user/permissionChecker'
44

55
export default async (req, res) => {
6-
new PermissionChecker(req).validateHas(Permissions.values.eagleEyeContentEdit)
6+
new PermissionChecker(req).validateHas(Permissions.values.eagleEyeContentCreate)
77

8-
const payload = await new EagleEyeContentService(req).update(req.params.id, req.body)
8+
const payload = await new EagleEyeContentService(req).upsert(req.body)
99

1010
await req.responseHandler.success(req, res, payload)
1111
}
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
import Permissions from '../../security/permissions'
2+
import EagleEyeSettingsService from '../../services/eagleEyeSettingsService'
3+
import PermissionChecker from '../../services/user/permissionChecker'
4+
5+
export default async (req, res) => {
6+
new PermissionChecker(req).validateHas(Permissions.values.eagleEyeActionCreate)
7+
8+
const payload = await new EagleEyeSettingsService(req).update(req.body)
9+
10+
await req.responseHandler.success(req, res, payload)
11+
}
Lines changed: 34 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,21 +1,47 @@
11
import { safeWrap } from '../../middlewares/errorMiddleware'
2+
import { featureFlagMiddleware } from '../../middlewares/featureFlagMiddleware'
3+
import { FeatureFlag } from '../../types/common'
24

35
export default (app) => {
4-
app.post(
5-
`/tenant/:tenantId/eagleEyeContent`,
6-
safeWrap(require('./eagleEyeContentSearch').default),
7-
)
86
app.post(
97
`/tenant/:tenantId/eagleEyeContent/query`,
8+
featureFlagMiddleware(FeatureFlag.EAGLE_EYE, 'entities.eagleEye.errors.planLimitExceeded'),
109
safeWrap(require('./eagleEyeContentQuery').default),
1110
)
12-
app.put(
13-
`/tenant/:tenantId/eagleEyeContent/:id`,
14-
safeWrap(require('./eagleEyeContentUpdate').default),
11+
12+
app.post(
13+
`/tenant/:tenantId/eagleEyeContent`,
14+
featureFlagMiddleware(FeatureFlag.EAGLE_EYE, 'entities.eagleEye.errors.planLimitExceeded'),
15+
safeWrap(require('./eagleEyeContentUpsert').default),
16+
)
17+
18+
app.get(
19+
`/tenant/:tenantId/eagleEyeContent/search`,
20+
featureFlagMiddleware(FeatureFlag.EAGLE_EYE, 'entities.eagleEye.errors.planLimitExceeded'),
21+
safeWrap(require('./eagleEyeContentSearch').default),
1522
)
16-
app.get(`/tenant/:tenantId/eagleEyeContent`, safeWrap(require('./eagleEyeContentList').default))
23+
1724
app.get(
1825
`/tenant/:tenantId/eagleEyeContent/:id`,
26+
featureFlagMiddleware(FeatureFlag.EAGLE_EYE, 'entities.eagleEye.errors.planLimitExceeded'),
1927
safeWrap(require('./eagleEyeContentFind').default),
2028
)
29+
30+
app.post(
31+
`/tenant/:tenantId/eagleEyeContent/:contentId/action`,
32+
featureFlagMiddleware(FeatureFlag.EAGLE_EYE, 'entities.eagleEye.errors.planLimitExceeded'),
33+
safeWrap(require('./eagleEyeActionCreate').default),
34+
)
35+
36+
app.put(
37+
`/tenant/:tenantId/eagleEyeContent/settings`,
38+
featureFlagMiddleware(FeatureFlag.EAGLE_EYE, 'entities.eagleEye.errors.planLimitExceeded'),
39+
safeWrap(require('./eagleEyeSettingsUpdate').default),
40+
)
41+
42+
app.delete(
43+
`/tenant/:tenantId/eagleEyeContent/:contentId/action/:actionId`,
44+
featureFlagMiddleware(FeatureFlag.EAGLE_EYE, 'entities.eagleEye.errors.planLimitExceeded'),
45+
safeWrap(require('./eagleEyeActionDestroy').default),
46+
)
2147
}

0 commit comments

Comments
 (0)