Skip to content

Commit f10df6f

Browse files
committed
Add constant arrays of enum values for typescript
1 parent b85bf01 commit f10df6f

File tree

2 files changed

+47
-0
lines changed

2 files changed

+47
-0
lines changed

Diff for: src/server/templates/typescript.ts

+20
Original file line numberDiff line numberDiff line change
@@ -390,6 +390,26 @@ export type Database = {
390390
})}
391391
}
392392
393+
export const Constants = {
394+
${schemas
395+
.sort(({ name: a }, { name: b }) => a.localeCompare(b))
396+
.map((schema) => {
397+
const schemaEnums = types
398+
.filter((type) => type.schema === schema.name && type.enums.length > 0)
399+
.sort(({ name: a }, { name: b }) => a.localeCompare(b))
400+
return `${JSON.stringify(schema.name)}: {
401+
Enums: {
402+
${schemaEnums.map(
403+
(enum_) =>
404+
`${JSON.stringify(enum_.name)}: [${enum_.enums
405+
.map((variant) => JSON.stringify(variant))
406+
.join(', ')}]`
407+
)}
408+
}
409+
}`
410+
})}
411+
} as const
412+
393413
type PublicSchema = Database[Extract<keyof Database, "public">]
394414
395415
export type Tables<

Diff for: test/server/typegen.ts

+27
Original file line numberDiff line numberDiff line change
@@ -431,6 +431,15 @@ test('typegen: typescript', async () => {
431431
}
432432
}
433433
434+
export const Constants = {
435+
public: {
436+
Enums: {
437+
meme_status: ["new", "old", "retired"],
438+
user_status: ["ACTIVE", "INACTIVE"],
439+
},
440+
},
441+
} as const
442+
434443
type PublicSchema = Database[Extract<keyof Database, "public">]
435444
436445
export type Tables<
@@ -978,6 +987,15 @@ test('typegen w/ one-to-one relationships', async () => {
978987
}
979988
}
980989
990+
export const Constants = {
991+
public: {
992+
Enums: {
993+
meme_status: ["new", "old", "retired"],
994+
user_status: ["ACTIVE", "INACTIVE"],
995+
},
996+
},
997+
} as const
998+
981999
type PublicSchema = Database[Extract<keyof Database, "public">]
9821000
9831001
export type Tables<
@@ -1525,6 +1543,15 @@ test('typegen: typescript w/ one-to-one relationships', async () => {
15251543
}
15261544
}
15271545
1546+
export const Constants = {
1547+
public: {
1548+
Enums: {
1549+
meme_status: ["new", "old", "retired"],
1550+
user_status: ["ACTIVE", "INACTIVE"],
1551+
},
1552+
},
1553+
} as const
1554+
15281555
type PublicSchema = Database[Extract<keyof Database, "public">]
15291556
15301557
export type Tables<

0 commit comments

Comments
 (0)