diff --git a/application/src/Storage/Feeds/createFeed.ts b/application/src/Storage/Feeds/createFeed.ts index c35d005..50fab42 100644 --- a/application/src/Storage/Feeds/createFeed.ts +++ b/application/src/Storage/Feeds/createFeed.ts @@ -30,6 +30,7 @@ export const createFeed = async ( displayName: feedData.displayName, locked: feedData.locked, createdAt: feedData.createdAt.getTime(), + refreshedAt: new Date().getTime(), foundAt: new Date().getTime(), fields: feedData.fields.map((field) => { return { name: field.name, value: field.value } diff --git a/application/src/Storage/Feeds/deleteOldFeeds.ts b/application/src/Storage/Feeds/deleteOldFeeds.ts index 4894be8..850aae3 100644 --- a/application/src/Storage/Feeds/deleteOldFeeds.ts +++ b/application/src/Storage/Feeds/deleteOldFeeds.ts @@ -7,13 +7,26 @@ export const deleteOldFeeds = async ( node: Node ): Promise => { await elastic.indices.refresh({ index: feedIndex }) + // delete by domain and (refreshedAt < node.refreshAttepmtedAt or refreshedAt=null) const result = await elastic.deleteByQuery({ index: feedIndex, query: { bool: { must: [ { match: { domain: node.domain } }, - { range: { refreshedAt: { lt: node.refreshAttemptedAt } } } + { + bool: { + should: [ + { range: { refreshedAt: { lt: node.refreshAttemptedAt } } }, + { + bool: { + must_not: { exists: { field: 'refreshedAt' } } + } + } + ], + minimum_should_match: 1 + } + } ] } } diff --git a/application/src/Storage/Feeds/updateFeed.ts b/application/src/Storage/Feeds/updateFeed.ts index 7944119..250e872 100644 --- a/application/src/Storage/Feeds/updateFeed.ts +++ b/application/src/Storage/Feeds/updateFeed.ts @@ -20,11 +20,11 @@ export const updateFeed = async ( followersCount: feedData.followersCount, followingCount: feedData.followingCount, statusesCount: feedData.statusesCount, - lastStatusAt: feedData.lastStatusAt, + lastStatusAt: feedData.lastStatusAt?.getTime(), description: feedData.description, displayName: feedData.displayName, locked: feedData.locked, - createdAt: feedData.createdAt, + createdAt: feedData.createdAt.getTime(), refreshedAt: new Date().getTime(), type: feedData.type, fields: feedData.fields.map((field) => {