Skip to content

Commit ff65480

Browse files
author
Joan Reyero
authored
Hotfix/eagle eye events (#6)
1 parent 858e3a5 commit ff65480

5 files changed

Lines changed: 61 additions & 2 deletions

File tree

backend/src/api/eagleEyeContent/eagleEyeContentList.ts

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,9 @@ export default async (req, res) => {
1010
const payload = await new EagleEyeContentService(req).findAndCountAll(req.query)
1111

1212
if (req.query.filter && Object.keys(req.query.filter).length > 0) {
13-
track('Eagle Eye Content Filtered', { filter: req.query.filter }, { ...req })
13+
const platforms = req.query.filter.platforms ? req.query.filter.platforms.split(',') : []
14+
const nDays = req.query.filter.nDays
15+
track('Eagle Eye Filter', { filter: req.query.filter, platforms, nDays }, { ...req })
1416
}
1517

1618
await ApiResponseHandler.success(req, res, payload)

backend/src/api/eagleEyeContent/eagleEyeContentSearch.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ export default async (req, res) => {
1212

1313
const payload = await new EagleEyeContentService(req).search(req.body.data)
1414

15-
track('EagleEyeContent Manually Created', { ...req.body.data }, { ...req })
15+
track('EagleEyeSearch', { ...req.body.data }, { ...req })
1616

1717
await ApiResponseHandler.success(req, res, payload)
1818
} catch (error) {

backend/src/database/repositories/__tests__/eagleEyeContentRepository.test.ts

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -329,6 +329,22 @@ describe('eagleEyeContentRepository tests', () => {
329329
expect(found.count).toBe(3)
330330
})
331331

332+
it('Filter by nDays', async () => {
333+
const mockIRepositoryOptions = await SequelizeTestUtils.getTestIRepositoryOptions(db)
334+
335+
await addAll(mockIRepositoryOptions)
336+
337+
const found = await EagleEyeContentRepository.findAndCountAll(
338+
{
339+
filter: {
340+
nDays: 1,
341+
},
342+
},
343+
mockIRepositoryOptions,
344+
)
345+
expect(found.count).toBe(3)
346+
})
347+
332348
it('Filter by status NULL', async () => {
333349
const mockIRepositoryOptions = await SequelizeTestUtils.getTestIRepositoryOptions(db)
334350

backend/src/database/repositories/eagleEyeContentRepository.ts

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -184,6 +184,14 @@ export default class EagleEyeContentRepository {
184184
})
185185
}
186186

187+
if (filter.nDays) {
188+
whereAnd.push({
189+
timestamp: {
190+
[Op.gte]: moment().subtract(filter.nDays, 'days').toDate(),
191+
},
192+
})
193+
}
194+
187195
if (filter.title) {
188196
whereAnd.push(SequelizeFilterUtils.ilikeIncludes('eagleEyeContent', 'title', filter.title))
189197
}

backend/src/services/eagleEyeContentService.ts

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ import { IServiceOptions } from './IServiceOptions'
55
import EagleEyeContentRepository from '../database/repositories/eagleEyeContentRepository'
66
import { getConfig } from '../config'
77
import Error400 from '../errors/Error403'
8+
import track from '../segment/track'
89

910
interface EagleEyeSearchPoint {
1011
vectorId: string
@@ -118,11 +119,43 @@ export default class EagleEyeContentService {
118119
const transaction = await SequelizeRepository.createTransaction(this.options.database)
119120

120121
try {
122+
const recordBeforeUpdate = await EagleEyeContentRepository.findById(id, { ...this.options })
121123
const record = await EagleEyeContentRepository.update(id, data, {
122124
...this.options,
123125
transaction,
124126
})
125127

128+
// If we are updating status we want to track it
129+
if (data.status !== recordBeforeUpdate.status) {
130+
// If we are going from null to status, we are either accepting or rejecting
131+
if (data.status && data.status !== null && data.status !== undefined) {
132+
track(
133+
`EagleEye ${data.status}`,
134+
{
135+
...data,
136+
platform: record.platform,
137+
keywords: record.keywords,
138+
title: record.title,
139+
url: record.url,
140+
},
141+
{ ...this.options },
142+
)
143+
// Here we are bringing back a rejected post to the Inbox
144+
} else if (recordBeforeUpdate.status === 'rejected' && data.status === null) {
145+
track(
146+
`EagleEye post from rejected to Inbox`,
147+
{
148+
...data,
149+
platform: record.platform,
150+
keywords: record.keywords,
151+
title: record.title,
152+
url: record.url,
153+
},
154+
{ ...this.options },
155+
)
156+
}
157+
}
158+
126159
await SequelizeRepository.commitTransaction(transaction)
127160

128161
return record

0 commit comments

Comments
 (0)