Skip to content

Commit 5dfd66e

Browse files
committed
feat: add python generator
1 parent 2b11c29 commit 5dfd66e

File tree

3 files changed

+401
-0
lines changed

3 files changed

+401
-0
lines changed
Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
import type { FastifyInstance } from 'fastify'
2+
import { PostgresMeta } from '../../../lib/index.js'
3+
import { DEFAULT_POOL_CONFIG } from '../../constants.js'
4+
import { extractRequestForLogging } from '../../utils.js'
5+
import { apply as applyPyTemplate } from '../../templates/python.js'
6+
import { getGeneratorMetadata } from '../../../lib/generators.js'
7+
8+
export default async (fastify: FastifyInstance) => {
9+
fastify.get<{
10+
Headers: { pg: string }
11+
Querystring: {
12+
excluded_schemas?: string
13+
included_schemas?: string
14+
}
15+
}>('/', async (request, reply) => {
16+
const connectionString = request.headers.pg
17+
const excludedSchemas =
18+
request.query.excluded_schemas?.split(',').map((schema) => schema.trim()) ?? []
19+
const includedSchemas =
20+
request.query.included_schemas?.split(',').map((schema) => schema.trim()) ?? []
21+
22+
const pgMeta: PostgresMeta = new PostgresMeta({ ...DEFAULT_POOL_CONFIG, connectionString })
23+
const { data: generatorMeta, error: generatorMetaError } = await getGeneratorMetadata(pgMeta, {
24+
includedSchemas,
25+
excludedSchemas,
26+
})
27+
if (generatorMetaError) {
28+
request.log.error({ error: generatorMetaError, request: extractRequestForLogging(request) })
29+
reply.code(500)
30+
return { error: generatorMetaError.message }
31+
}
32+
33+
return applyPyTemplate(generatorMeta)
34+
})
35+
}

src/server/routes/index.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ import ViewsRoute from './views.js'
2121
import TypeScriptTypeGenRoute from './generators/typescript.js'
2222
import GoTypeGenRoute from './generators/go.js'
2323
import SwiftTypeGenRoute from './generators/swift.js'
24+
import PythonTypeGenRoute from './generators/python.js'
2425
import { PG_CONNECTION, CRYPTO_KEY } from '../constants.js'
2526

2627
export default async (fastify: FastifyInstance) => {
@@ -82,4 +83,5 @@ export default async (fastify: FastifyInstance) => {
8283
fastify.register(TypeScriptTypeGenRoute, { prefix: '/generators/typescript' })
8384
fastify.register(GoTypeGenRoute, { prefix: '/generators/go' })
8485
fastify.register(SwiftTypeGenRoute, { prefix: '/generators/swift' })
86+
fastify.register(PythonTypeGenRoute, { prefix: '/generators/python' })
8587
}

0 commit comments

Comments
 (0)