Skip to content

Commit 3fe3856

Browse files
committed
fix: router hacks
It no longer works after update.
1 parent 005b8d4 commit 3fe3856

File tree

1 file changed

+46
-52
lines changed

1 file changed

+46
-52
lines changed

src/server/routes/columns.ts

Lines changed: 46 additions & 52 deletions
Original file line numberDiff line numberDiff line change
@@ -33,68 +33,62 @@ export default async (fastify: FastifyInstance) => {
3333
return data
3434
})
3535

36-
// HACK: Dark arts to get around https://github.com/delvedor/find-my-way/issues/285:
37-
// - this route has to be before /:tableId(^\\d+$)
38-
// - can't do :tableId(^\\d+$) instead of :tableId(^\\d+)
39-
// - need to separate :ordinalPosition as a 2nd param
40-
//
41-
// Anyhow, this probably just happens to work.
4236
fastify.get<{
4337
Headers: { pg: string }
4438
Params: {
4539
tableId: string
4640
ordinalPosition: string
4741
}
48-
}>('/:tableId(^\\d+).:ordinalPosition(^\\d+$)', async (request, reply) => {
49-
const {
50-
headers: { pg: connectionString },
51-
params: { tableId, ordinalPosition },
52-
} = request
53-
54-
const pgMeta = new PostgresMeta({ ...DEFAULT_POOL_CONFIG, connectionString })
55-
const { data, error } = await pgMeta.columns.retrieve({ id: `${tableId}.${ordinalPosition}` })
56-
await pgMeta.end()
57-
if (error) {
58-
request.log.error({ error, request: extractRequestForLogging(request) })
59-
reply.code(400)
60-
if (error.message.startsWith('Cannot find')) reply.code(404)
61-
return { error: error.message }
62-
}
63-
64-
return data
65-
})
66-
67-
fastify.get<{
68-
Headers: { pg: string }
69-
Params: { tableId: number }
7042
Querystring: {
7143
include_system_schemas?: string
72-
limit?: number
73-
offset?: number
44+
limit?: string
45+
offset?: string
7446
}
75-
}>('/:tableId(^\\d+$)', async (request, reply) => {
76-
const {
77-
headers: { pg: connectionString },
78-
query: { limit, offset },
79-
params: { tableId },
80-
} = request
81-
const includeSystemSchemas = request.query.include_system_schemas === 'true'
82-
83-
const pgMeta: PostgresMeta = new PostgresMeta({ ...DEFAULT_POOL_CONFIG, connectionString })
84-
const { data, error } = await pgMeta.columns.list({
85-
tableId,
86-
includeSystemSchemas,
87-
limit,
88-
offset,
89-
})
90-
await pgMeta.end()
91-
if (error) {
92-
request.log.error({ error, request: extractRequestForLogging(request) })
93-
reply.code(500)
94-
return { error: error.message }
47+
}>('/:tableId(^\\d+):ordinalPosition', async (request, reply) => {
48+
if (request.params.ordinalPosition === '') {
49+
const {
50+
headers: { pg: connectionString },
51+
query: { limit, offset },
52+
params: { tableId },
53+
} = request
54+
const includeSystemSchemas = request.query.include_system_schemas === 'true'
55+
56+
const pgMeta: PostgresMeta = new PostgresMeta({ ...DEFAULT_POOL_CONFIG, connectionString })
57+
const { data, error } = await pgMeta.columns.list({
58+
tableId: Number(tableId),
59+
includeSystemSchemas,
60+
limit: Number(limit),
61+
offset: Number(offset),
62+
})
63+
await pgMeta.end()
64+
if (error) {
65+
request.log.error({ error, request: extractRequestForLogging(request) })
66+
reply.code(500)
67+
return { error: error.message }
68+
}
69+
70+
return data
71+
} else if (/^\.\d+$/.test(request.params.ordinalPosition)) {
72+
const {
73+
headers: { pg: connectionString },
74+
params: { tableId, ordinalPosition: ordinalPositionWithDot },
75+
} = request
76+
const ordinalPosition = ordinalPositionWithDot.slice(1)
77+
78+
const pgMeta = new PostgresMeta({ ...DEFAULT_POOL_CONFIG, connectionString })
79+
const { data, error } = await pgMeta.columns.retrieve({ id: `${tableId}.${ordinalPosition}` })
80+
await pgMeta.end()
81+
if (error) {
82+
request.log.error({ error, request: extractRequestForLogging(request) })
83+
reply.code(400)
84+
if (error.message.startsWith('Cannot find')) reply.code(404)
85+
return { error: error.message }
86+
}
87+
88+
return data
89+
} else {
90+
return reply.callNotFound()
9591
}
96-
97-
return data
9892
})
9993

10094
fastify.post<{

0 commit comments

Comments
 (0)