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 @@
+
+
+