Skip to content

Commit 9e6431d

Browse files
committed
feat(typegen): materialized views
1 parent fc6e4bd commit 9e6431d

File tree

3 files changed

+23
-3
lines changed

3 files changed

+23
-3
lines changed

src/server/routes/generators/typescript.ts

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,8 @@ export default async (fastify: FastifyInstance) => {
2222
const { data: schemas, error: schemasError } = await pgMeta.schemas.list()
2323
const { data: tables, error: tablesError } = await pgMeta.tables.list()
2424
const { data: views, error: viewsError } = await pgMeta.views.list()
25+
const { data: materializedViews, error: materializedViewsError } =
26+
await pgMeta.materializedViews.list({ includeColumns: true })
2527
const { data: functions, error: functionsError } = await pgMeta.functions.list()
2628
const { data: types, error: typesError } = await pgMeta.types.list({
2729
includeArrayTypes: true,
@@ -44,6 +46,14 @@ export default async (fastify: FastifyInstance) => {
4446
reply.code(500)
4547
return { error: viewsError.message }
4648
}
49+
if (materializedViewsError) {
50+
request.log.error({
51+
error: materializedViewsError,
52+
request: extractRequestForLogging(request),
53+
})
54+
reply.code(500)
55+
return { error: materializedViewsError.message }
56+
}
4757
if (functionsError) {
4858
request.log.error({ error: functionsError, request: extractRequestForLogging(request) })
4959
reply.code(500)
@@ -63,6 +73,7 @@ export default async (fastify: FastifyInstance) => {
6373
),
6474
tables,
6575
views,
76+
materializedViews,
6677
functions: functions.filter(
6778
({ return_type }) => !['trigger', 'event_trigger'].includes(return_type)
6879
),

src/server/server.ts

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,8 @@ if (EXPORT_DOCS) {
3939
const { data: schemas, error: schemasError } = await pgMeta.schemas.list()
4040
const { data: tables, error: tablesError } = await pgMeta.tables.list()
4141
const { data: views, error: viewsError } = await pgMeta.views.list()
42+
const { data: materializedViews, error: materializedViewsError } =
43+
await pgMeta.materializedViews.list({ includeColumns: true })
4244
const { data: functions, error: functionsError } = await pgMeta.functions.list()
4345
const { data: types, error: typesError } = await pgMeta.types.list({
4446
includeArrayTypes: true,
@@ -55,6 +57,9 @@ if (EXPORT_DOCS) {
5557
if (viewsError) {
5658
throw new Error(viewsError.message)
5759
}
60+
if (materializedViewsError) {
61+
throw new Error(materializedViewsError.message)
62+
}
5863
if (functionsError) {
5964
throw new Error(functionsError.message)
6065
}
@@ -71,6 +76,7 @@ if (EXPORT_DOCS) {
7176
),
7277
tables,
7378
views,
79+
materializedViews,
7480
functions: functions.filter(
7581
({ return_type }) => !['trigger', 'event_trigger'].includes(return_type)
7682
),

src/server/templates/typescript.ts

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
import prettier from 'prettier'
22
import type {
33
PostgresFunction,
4+
PostgresMaterializedView,
45
PostgresSchema,
56
PostgresTable,
67
PostgresType,
@@ -11,13 +12,15 @@ export const apply = ({
1112
schemas,
1213
tables,
1314
views,
15+
materializedViews,
1416
functions,
1517
types,
1618
arrayTypes,
1719
}: {
1820
schemas: PostgresSchema[]
1921
tables: (PostgresTable & { columns: unknown[] })[]
2022
views: (PostgresView & { columns: unknown[] })[]
23+
materializedViews: (PostgresMaterializedView & { columns: unknown[] })[]
2124
functions: PostgresFunction[]
2225
types: PostgresType[]
2326
arrayTypes: PostgresType[]
@@ -32,7 +35,7 @@ export interface Database {
3235
const schemaTables = tables
3336
.filter((table) => table.schema === schema.name)
3437
.sort(({ name: a }, { name: b }) => a.localeCompare(b))
35-
const schemaViews = views
38+
const schemaViews = [...views, ...materializedViews]
3639
.filter((view) => view.schema === schema.name)
3740
.sort(({ name: a }, { name: b }) => a.localeCompare(b))
3841
const schemaFunctions = functions
@@ -165,7 +168,7 @@ export interface Database {
165168
)}
166169
}
167170
${
168-
view.is_updatable
171+
'is_updatable' in view && view.is_updatable
169172
? `Insert: {
170173
${view.columns
171174
.sort(({ name: a }, { name: b }) => a.localeCompare(b))
@@ -184,7 +187,7 @@ export interface Database {
184187
: ''
185188
}
186189
${
187-
view.is_updatable
190+
'is_updatable' in view && view.is_updatable
188191
? `Update: {
189192
${view.columns
190193
.sort(({ name: a }, { name: b }) => a.localeCompare(b))

0 commit comments

Comments
 (0)