diff --git a/src/components/database/BaseDatabase.ts b/src/components/database/BaseDatabase.ts index 637b82aec..f02153415 100644 --- a/src/components/database/BaseDatabase.ts +++ b/src/components/database/BaseDatabase.ts @@ -63,7 +63,7 @@ export abstract class AbstractLogDatabase { moduleName?: string, level?: string, page?: number - ): Promise[] | null> + ): Promise[]> abstract delete(logId: string): Promise abstract deleteOldLogs(): Promise diff --git a/src/components/database/ElasticSearchDatabase.ts b/src/components/database/ElasticSearchDatabase.ts index 87bf8d807..cf332b951 100644 --- a/src/components/database/ElasticSearchDatabase.ts +++ b/src/components/database/ElasticSearchDatabase.ts @@ -849,7 +849,7 @@ export class ElasticsearchLogDatabase extends AbstractLogDatabase { moduleName?: string, level?: string, page?: number - ): Promise[] | null> { + ): Promise[]> { try { const filterConditions: any = { bool: { @@ -888,10 +888,6 @@ export class ElasticsearchLogDatabase extends AbstractLogDatabase { from }) - console.log('logs results:', result) - console.log('logs results hits:', result.hits) - console.log('logs results hits hits:', result.hits.hits) - return result.hits.hits.map((hit: any) => { return normalizeDocumentId(hit._source, hit._id) }) @@ -903,7 +899,7 @@ export class ElasticsearchLogDatabase extends AbstractLogDatabase { GENERIC_EMOJIS.EMOJI_CROSS_MARK, LOG_LEVELS_STR.LEVEL_ERROR ) - return null + return [] } } @@ -943,13 +939,12 @@ export class ElasticsearchLogDatabase extends AbstractLogDatabase { try { const oldLogs = await this.retrieveMultipleLogs(new Date(0), deleteBeforeTime, 200) - if (oldLogs) { - for (const log of oldLogs) { - if (log.id) { - await this.delete(log.id) - } + for (const log of oldLogs) { + if (log.id) { + await this.delete(log.id) } } + return oldLogs ? oldLogs.length : 0 } catch (error) { DATABASE_LOGGER.logMessageWithEmoji( diff --git a/src/components/database/TypenseDatabase.ts b/src/components/database/TypenseDatabase.ts index 6a67fc281..004826866 100644 --- a/src/components/database/TypenseDatabase.ts +++ b/src/components/database/TypenseDatabase.ts @@ -805,7 +805,7 @@ export class TypesenseLogDatabase extends AbstractLogDatabase { moduleName?: string, level?: string, page?: number - ): Promise[] | null> { + ): Promise[]> { try { let filterConditions = `timestamp:>=${startTime.getTime()} && timestamp:<${endTime.getTime()}` if (moduleName) { @@ -851,7 +851,7 @@ export class TypesenseLogDatabase extends AbstractLogDatabase { GENERIC_EMOJIS.EMOJI_CROSS_MARK, LOG_LEVELS_STR.LEVEL_ERROR ) - return null + return [] } } @@ -902,7 +902,7 @@ export class TypesenseLogDatabase extends AbstractLogDatabase { } } } - return oldLogs ? oldLogs.length : 0 + return oldLogs.length } catch (error) { DATABASE_LOGGER.logMessageWithEmoji( `Error when deleting old log entries: ${error.message}`, diff --git a/src/components/httpRoutes/logs.ts b/src/components/httpRoutes/logs.ts index ba0631b03..7826ce452 100644 --- a/src/components/httpRoutes/logs.ts +++ b/src/components/httpRoutes/logs.ts @@ -56,7 +56,7 @@ logRoutes.post('/logs', express.json(), validateRequest, async (req, res) => { .getDatabase() .logs.retrieveMultipleLogs(startTime, endTime, maxLogs, moduleName, level, page) - if (logs) { + if (logs.length > 0) { res.json(logs) } else { res.status(404).send('No logs found') diff --git a/src/test/integration/logs.test.ts b/src/test/integration/logs.test.ts index f216d8a0c..c87feb8da 100644 --- a/src/test/integration/logs.test.ts +++ b/src/test/integration/logs.test.ts @@ -87,11 +87,11 @@ describe('LogDatabase CRUD', () => { if (logs.length > 0) { logs = logs.filter((log) => log.message === newLogEntry.message) - expect(logs?.length).to.equal(1) - expect(Number(logs?.[0].id)).to.greaterThan(Number(logId)) - expect(logs?.[0].level).to.equal(newLogEntry.level) - expect(logs?.[0].message).to.equal(newLogEntry.message) - expect(logs?.[0].moduleName).to.equal('HTTP') + expect(logs.length).to.equal(1) + expect(Number(logs[0].id)).to.greaterThan(Number(logId)) + expect(logs[0].level).to.equal(newLogEntry.level) + expect(logs[0].message).to.equal(newLogEntry.message) + expect(logs[0].moduleName).to.equal('HTTP') } }) @@ -118,11 +118,11 @@ describe('LogDatabase CRUD', () => { logs = logs.filter((log) => log.message === newLogEntry.message) if (logs.length > 0) { - expect(logs?.length).to.equal(1) - expect(Number(logs?.[0].id)).to.greaterThan(Number(logId)) - expect(logs?.[0].level).to.equal(newLogEntry.level) - expect(logs?.[0].message).to.equal(newLogEntry.message) - expect(logs?.[0].moduleName).to.equal('HTTP') + expect(logs.length).to.equal(1) + expect(Number(logs[0].id)).to.greaterThan(Number(logId)) + expect(logs[0].level).to.equal(newLogEntry.level) + expect(logs[0].message).to.equal(newLogEntry.message) + expect(logs[0].moduleName).to.equal('HTTP') } }) @@ -153,11 +153,11 @@ describe('LogDatabase CRUD', () => { logs = logs.filter((log) => log.message.includes(newLogEntry.message)) if (logs.length > 0) { - expect(logs?.length).to.equal(1) - expect(Number(logs?.[0].id)).to.greaterThan(Number(logId)) - expect(logs?.[0].level).to.equal(newLogEntry.level) - assert(logs?.[0].message) - expect(logs?.[0].moduleName).to.equal('HTTP') + expect(logs.length).to.equal(1) + expect(Number(logs[0].id)).to.greaterThan(Number(logId)) + expect(logs[0].level).to.equal(newLogEntry.level) + assert(logs[0].message) + expect(logs[0].moduleName).to.equal('HTTP') } }) @@ -293,13 +293,13 @@ describe('LogDatabase retrieveMultipleLogs with specific parameters', () => { it('should return an empty array for negative maxLogs', async () => { const logs = await database.logs.retrieveMultipleLogs(startTime, endTime, -1) - assert.isNull(logs, 'Expected logs to be null') + assert.isEmpty(logs, 'Expected logs to be empty') }) it('should retrieve a maximum of one log when maxLogs is set to 1', async () => { const logs = await database.logs.retrieveMultipleLogs(startTime, endTime, 1) // check if the length of logs is 1 or less - expect(logs?.length).to.be.at.most(1) + expect(logs.length).to.be.at.most(1) }) it('should retrieve no logs when maxLogs is set to 0', async () => { @@ -383,14 +383,14 @@ describe('LogDatabase deleteOldLogs', () => { let logs = await database.logs.retrieveMultipleLogs(startTime, endTime, 100) // Check that the old log is not present, but the recent one is - const oldLogPresent = logs?.some((log) => log.message === oldLogEntry.message) + const oldLogPresent = logs.some((log) => log.message === oldLogEntry.message) assert(oldLogPresent === false, 'Old logs are still present') // since we have many logs going to DB by default, we need to re-frame the timestamp to grab it startTime = new Date(recentLogEntry.timestamp - 1000) endTime = new Date(recentLogEntry.timestamp + 1000) logs = await database.logs.retrieveMultipleLogs(startTime, endTime, 100) - const recentLogPresent = logs?.some((log) => log.message === recentLogEntry.message) + const recentLogPresent = logs.some((log) => log.message === recentLogEntry.message) assert(recentLogPresent === true, 'Recent logs are not present') } else assert(