30 lines
900 B
TypeScript
30 lines
900 B
TypeScript
import type { HttpContext } from '@adonisjs/core/http'
|
|
import ParseLog from '#models/parse_log'
|
|
|
|
export default class ParseLogsController {
|
|
/**
|
|
* List parse logs with pagination, ordered by latest
|
|
* GET /api/parse-logs?page=1&limit=20
|
|
*/
|
|
async index({ request, response }: HttpContext) {
|
|
const page = request.input('page', 1)
|
|
const limit = request.input('limit', 20)
|
|
|
|
const pageNumber = Math.max(1, Number(page))
|
|
const limitNumber = Math.min(100, Math.max(1, Number(limit)))
|
|
|
|
try {
|
|
const parseLogs = await ParseLog.query()
|
|
.orderBy('started_at', 'desc')
|
|
.paginate(pageNumber, limitNumber)
|
|
|
|
return response.ok(parseLogs.serialize())
|
|
} catch (error) {
|
|
return response.internalServerError({
|
|
error: 'Failed to fetch parse logs',
|
|
message: error instanceof Error ? error.message : 'Unknown error',
|
|
})
|
|
}
|
|
}
|
|
}
|