Initial Nuxt data explorer setup
This commit is contained in:
22
nuxt4-app/server/api/data/[table]/[...segment].get.ts
Normal file
22
nuxt4-app/server/api/data/[table]/[...segment].get.ts
Normal file
@@ -0,0 +1,22 @@
|
||||
import { parseQuerySegment } from '../../../services/query-parser'
|
||||
import { fetchTableData, fetchTableRecord } from '../../../services/table-service'
|
||||
|
||||
export default defineEventHandler(async (event) => {
|
||||
const table = event.context.params?.table
|
||||
const segmentParam = event.context.params?.segment
|
||||
|
||||
if (!table || !segmentParam) {
|
||||
throw createError({ statusCode: 400, statusMessage: 'Tabla o parámetro no especificados' })
|
||||
}
|
||||
|
||||
const values = Array.isArray(segmentParam) ? segmentParam : [segmentParam]
|
||||
const target = values[0]
|
||||
|
||||
const parsedQuery = parseQuerySegment(target)
|
||||
|
||||
if (parsedQuery) {
|
||||
return await fetchTableData(table, { parsedQuery })
|
||||
}
|
||||
|
||||
return await fetchTableRecord(table, target)
|
||||
})
|
||||
26
nuxt4-app/server/api/data/[table]/index.get.ts
Normal file
26
nuxt4-app/server/api/data/[table]/index.get.ts
Normal file
@@ -0,0 +1,26 @@
|
||||
import { parseQuerySegment } from '../../../services/query-parser'
|
||||
import { fetchTableData } from '../../../services/table-service'
|
||||
|
||||
export default defineEventHandler(async (event) => {
|
||||
const table = event.context.params?.table
|
||||
|
||||
if (!table) {
|
||||
throw createError({ statusCode: 400, statusMessage: 'Tabla no especificada' })
|
||||
}
|
||||
|
||||
const query = getQuery(event)
|
||||
const limitValue = Number.parseInt((query.limit as string) ?? '', 10)
|
||||
const limit = Number.isFinite(limitValue) ? Math.min(Math.max(limitValue, 1), 500) : undefined
|
||||
|
||||
const parsedQuery = parseQuerySegment(query.query as string | undefined)
|
||||
|
||||
return await fetchTableData(table, {
|
||||
parsedQuery,
|
||||
limit,
|
||||
filters: {
|
||||
id: (query.id as string) || undefined,
|
||||
createdFrom: (query.created_from as string) || undefined,
|
||||
createdTo: (query.created_to as string) || undefined
|
||||
}
|
||||
})
|
||||
})
|
||||
9
nuxt4-app/server/api/data/index.get.ts
Normal file
9
nuxt4-app/server/api/data/index.get.ts
Normal file
@@ -0,0 +1,9 @@
|
||||
import { fetchAllData } from '../../services/table-service'
|
||||
|
||||
export default defineEventHandler(async (event) => {
|
||||
const query = getQuery(event)
|
||||
const requestedLimit = Number.parseInt((query.limit as string) ?? '', 10)
|
||||
const limit = Number.isFinite(requestedLimit) ? Math.min(Math.max(requestedLimit, 1), 100) : 25
|
||||
|
||||
return await fetchAllData(limit)
|
||||
})
|
||||
Reference in New Issue
Block a user