@@ -8,6 +8,7 @@ import type {
88 PostgresView ,
99} from '../../lib/index.js'
1010import type { GeneratorMetadata } from '../../lib/generators.js'
11+ import { GENERATE_TYPES_DEFAULT_SCHEMA } from '../constants.js'
1112
1213export const apply = async ( {
1314 schemas,
@@ -434,98 +435,130 @@ export type Database = {
434435 } ) }
435436}
436437
437- type PublicSchema = Database[Extract<keyof Database, "public" >]
438+ type DefaultSchema = Database[Extract<keyof Database, ${ JSON . stringify ( GENERATE_TYPES_DEFAULT_SCHEMA ) } >]
438439
439440export type Tables<
440- PublicTableNameOrOptions extends
441- | keyof (PublicSchema ["Tables"] & PublicSchema ["Views"])
441+ DefaultSchemaTableNameOrOptions extends
442+ | keyof (DefaultSchema ["Tables"] & DefaultSchema ["Views"])
442443 | { schema: keyof Database },
443- TableName extends PublicTableNameOrOptions extends { schema: keyof Database }
444- ? keyof (Database[PublicTableNameOrOptions["schema"]]["Tables"] &
445- Database[PublicTableNameOrOptions["schema"]]["Views"])
446- : never = never
447- > = PublicTableNameOrOptions extends { schema: keyof Database }
448- ? (Database[PublicTableNameOrOptions["schema"]]["Tables"] &
449- Database[PublicTableNameOrOptions["schema"]]["Views"])[TableName] extends {
444+ TableName extends DefaultSchemaTableNameOrOptions extends {
445+ schema: keyof Database
446+ }
447+ ? keyof (Database[DefaultSchemaTableNameOrOptions["schema"]]["Tables"] &
448+ Database[DefaultSchemaTableNameOrOptions["schema"]]["Views"])
449+ : never = never,
450+ > = DefaultSchemaTableNameOrOptions extends { schema: keyof Database }
451+ ? (Database[DefaultSchemaTableNameOrOptions["schema"]]["Tables"] &
452+ Database[DefaultSchemaTableNameOrOptions["schema"]]["Views"])[TableName] extends {
450453 Row: infer R
451454 }
452455 ? R
453456 : never
454- : PublicTableNameOrOptions extends keyof (PublicSchema["Tables"] & PublicSchema["Views"])
455- ? (PublicSchema["Tables"] & PublicSchema["Views"])[PublicTableNameOrOptions] extends {
457+ : DefaultSchemaTableNameOrOptions extends keyof (DefaultSchema["Tables"] &
458+ DefaultSchema["Views"])
459+ ? (DefaultSchema["Tables"] &
460+ DefaultSchema["Views"])[DefaultSchemaTableNameOrOptions] extends {
456461 Row: infer R
457462 }
458463 ? R
459464 : never
460465 : never
461466
462467export type TablesInsert<
463- PublicTableNameOrOptions extends
464- | keyof PublicSchema ["Tables"]
468+ DefaultSchemaTableNameOrOptions extends
469+ | keyof DefaultSchema ["Tables"]
465470 | { schema: keyof Database },
466- TableName extends PublicTableNameOrOptions extends { schema: keyof Database }
467- ? keyof Database[PublicTableNameOrOptions["schema"]]["Tables"]
468- : never = never
469- > = PublicTableNameOrOptions extends { schema: keyof Database }
470- ? Database[PublicTableNameOrOptions["schema"]]["Tables"][TableName] extends {
471+ TableName extends DefaultSchemaTableNameOrOptions extends {
472+ schema: keyof Database
473+ }
474+ ? keyof Database[DefaultSchemaTableNameOrOptions["schema"]]["Tables"]
475+ : never = never,
476+ > = DefaultSchemaTableNameOrOptions extends { schema: keyof Database }
477+ ? Database[DefaultSchemaTableNameOrOptions["schema"]]["Tables"][TableName] extends {
471478 Insert: infer I
472479 }
473480 ? I
474481 : never
475- : PublicTableNameOrOptions extends keyof PublicSchema["Tables"]
476- ? PublicSchema["Tables"][PublicTableNameOrOptions] extends {
477- Insert: infer I
478- }
479- ? I
482+ : DefaultSchemaTableNameOrOptions extends keyof DefaultSchema["Tables"]
483+ ? DefaultSchema["Tables"][DefaultSchemaTableNameOrOptions] extends {
484+ Insert: infer I
485+ }
486+ ? I
487+ : never
480488 : never
481- : never
482489
483490export type TablesUpdate<
484- PublicTableNameOrOptions extends
485- | keyof PublicSchema ["Tables"]
491+ DefaultSchemaTableNameOrOptions extends
492+ | keyof DefaultSchema ["Tables"]
486493 | { schema: keyof Database },
487- TableName extends PublicTableNameOrOptions extends { schema: keyof Database }
488- ? keyof Database[PublicTableNameOrOptions["schema"]]["Tables"]
489- : never = never
490- > = PublicTableNameOrOptions extends { schema: keyof Database }
491- ? Database[PublicTableNameOrOptions["schema"]]["Tables"][TableName] extends {
494+ TableName extends DefaultSchemaTableNameOrOptions extends {
495+ schema: keyof Database
496+ }
497+ ? keyof Database[DefaultSchemaTableNameOrOptions["schema"]]["Tables"]
498+ : never = never,
499+ > = DefaultSchemaTableNameOrOptions extends { schema: keyof Database }
500+ ? Database[DefaultSchemaTableNameOrOptions["schema"]]["Tables"][TableName] extends {
492501 Update: infer U
493502 }
494503 ? U
495504 : never
496- : PublicTableNameOrOptions extends keyof PublicSchema["Tables"]
497- ? PublicSchema["Tables"][PublicTableNameOrOptions] extends {
498- Update: infer U
499- }
500- ? U
505+ : DefaultSchemaTableNameOrOptions extends keyof DefaultSchema["Tables"]
506+ ? DefaultSchema["Tables"][DefaultSchemaTableNameOrOptions] extends {
507+ Update: infer U
508+ }
509+ ? U
510+ : never
501511 : never
502- : never
503512
504513export type Enums<
505- PublicEnumNameOrOptions extends
506- | keyof PublicSchema ["Enums"]
514+ DefaultSchemaEnumNameOrOptions extends
515+ | keyof DefaultSchema ["Enums"]
507516 | { schema: keyof Database },
508- EnumName extends PublicEnumNameOrOptions extends { schema: keyof Database }
509- ? keyof Database[PublicEnumNameOrOptions["schema"]]["Enums"]
510- : never = never
511- > = PublicEnumNameOrOptions extends { schema: keyof Database }
512- ? Database[PublicEnumNameOrOptions["schema"]]["Enums"][EnumName]
513- : PublicEnumNameOrOptions extends keyof PublicSchema["Enums"]
514- ? PublicSchema["Enums"][PublicEnumNameOrOptions]
515- : never
517+ EnumName extends DefaultSchemaEnumNameOrOptions extends {
518+ schema: keyof Database
519+ }
520+ ? keyof Database[DefaultSchemaEnumNameOrOptions["schema"]]["Enums"]
521+ : never = never,
522+ > = DefaultSchemaEnumNameOrOptions extends { schema: keyof Database }
523+ ? Database[DefaultSchemaEnumNameOrOptions["schema"]]["Enums"][EnumName]
524+ : DefaultSchemaEnumNameOrOptions extends keyof DefaultSchema["Enums"]
525+ ? DefaultSchema["Enums"][DefaultSchemaEnumNameOrOptions]
526+ : never
516527
517528export type CompositeTypes<
518529 PublicCompositeTypeNameOrOptions extends
519- | keyof PublicSchema[' CompositeTypes' ]
530+ | keyof DefaultSchema[" CompositeTypes" ]
520531 | { schema: keyof Database },
521- CompositeTypeName extends PublicCompositeTypeNameOrOptions extends { schema: keyof Database }
522- ? keyof Database[PublicCompositeTypeNameOrOptions['schema']]['CompositeTypes']
523- : never = never
532+ CompositeTypeName extends PublicCompositeTypeNameOrOptions extends {
533+ schema: keyof Database
534+ }
535+ ? keyof Database[PublicCompositeTypeNameOrOptions["schema"]]["CompositeTypes"]
536+ : never = never,
524537> = PublicCompositeTypeNameOrOptions extends { schema: keyof Database }
525- ? Database[PublicCompositeTypeNameOrOptions['schema']]['CompositeTypes'][CompositeTypeName]
526- : PublicCompositeTypeNameOrOptions extends keyof PublicSchema['CompositeTypes']
527- ? PublicSchema['CompositeTypes'][PublicCompositeTypeNameOrOptions]
528- : never;
538+ ? Database[PublicCompositeTypeNameOrOptions["schema"]]["CompositeTypes"][CompositeTypeName]
539+ : PublicCompositeTypeNameOrOptions extends keyof DefaultSchema["CompositeTypes"]
540+ ? DefaultSchema["CompositeTypes"][PublicCompositeTypeNameOrOptions]
541+ : never
542+
543+ export const Constants = {
544+ ${ schemas
545+ . sort ( ( { name : a } , { name : b } ) => a . localeCompare ( b ) )
546+ . map ( ( schema ) => {
547+ const schemaEnums = types
548+ . filter ( ( type ) => type . schema === schema . name && type . enums . length > 0 )
549+ . sort ( ( { name : a } , { name : b } ) => a . localeCompare ( b ) )
550+ return `${ JSON . stringify ( schema . name ) } : {
551+ Enums: {
552+ ${ schemaEnums . map (
553+ ( enum_ ) =>
554+ `${ JSON . stringify ( enum_ . name ) } : [${ enum_ . enums
555+ . map ( ( variant ) => JSON . stringify ( variant ) )
556+ . join ( ', ' ) } ]`
557+ ) }
558+ }
559+ }`
560+ } ) }
561+ } as const
529562`
530563
531564 output = await prettier . format ( output , {
0 commit comments