diff --git a/server/src/resolvers/Query/logs.js b/server/src/resolvers/Query/logs.js index a35bdfb..8cda665 100644 --- a/server/src/resolvers/Query/logs.js +++ b/server/src/resolvers/Query/logs.js @@ -1,8 +1,36 @@ +import { logError } from '../../lib/logger' import prisma from '../../prisma' -export async function logs() { - return await prisma.log.findMany({ - orderBy: { timestamp: 'desc' }, - take: 500 - }) +export async function logs(parent, { search, dateIn, dateOut, limit }) { + if (!dateOut) dateOut = new Date() + + try { + const logs = await prisma.log.findMany({ + where: { + timestamp: { + gte: new Date(dateIn), + lte: new Date(dateOut) + } + }, + orderBy: { timestamp: 'desc' }, + take: search ? undefined : limit + }) + + if (search) search = search.trim().toLowerCase() + + return search + ? logs + .filter( + log => + log.message.toLowerCase().includes(search) || + log.tags.some(tag => tag.toLowerCase().includes(search)) + ) + .slice(0, limit) + : logs + } catch (e) { + console.error(e.message) + throw new Error( + 'Não foi possível recuperar os logs com a entrada especificada.' + ) + } } diff --git a/server/src/typeDefs.js b/server/src/typeDefs.js index 638603c..1a6bb67 100644 --- a/server/src/typeDefs.js +++ b/server/src/typeDefs.js @@ -48,9 +48,14 @@ const typeDefs = gql` @cacheControl(maxAge: 10, scope: PRIVATE) "Application Logs" - logs: [Log]! + logs( + search: String = "" + dateIn: String! + dateOut: String + limit: Int = 200 + ): [Log]! @auth(roles: ["superAdmin"]) - @cacheControl(maxAge: 5, scope: PRIVATE) + @cacheControl(maxAge: 2, scope: PRIVATE) } type Mutation { diff --git a/web/src/views/Logs.vue b/web/src/views/Logs.vue index 6bbafaf..889fc29 100644 --- a/web/src/views/Logs.vue +++ b/web/src/views/Logs.vue @@ -27,13 +27,15 @@ + + +