File tree Expand file tree Collapse file tree 2 files changed +47
-27
lines changed Expand file tree Collapse file tree 2 files changed +47
-27
lines changed Original file line number Diff line number Diff line change 1
- SELECT
2
- t .oid :: int8 AS id,
3
- t .typname AS name,
4
- n .nspname AS schema,
5
- format_type (t .oid , NULL ) AS format,
6
- array_to_json(
7
- array(
8
- SELECT
9
- e .enumlabel
10
- FROM
11
- pg_enum e
12
- WHERE
13
- e .enumtypid = t .oid
14
- ORDER BY
15
- e .oid
16
- )
17
- ) AS enums,
18
- obj_description (t .oid , ' pg_type' ) AS comment
19
- FROM
1
+ select
2
+ t .oid ::int8 as id,
3
+ t .typname as name,
4
+ n .nspname as schema,
5
+ format_type (t .oid , null ) as format,
6
+ coalesce(t_enums .enums , ' []' ) as enums,
7
+ coalesce(t_attributes .attributes , ' []' ) as attributes,
8
+ obj_description (t .oid , ' pg_type' ) as comment
9
+ from
20
10
pg_type t
21
- LEFT JOIN pg_namespace n ON n .oid = t .typnamespace
22
- WHERE
11
+ left join pg_namespace n on n .oid = t .typnamespace
12
+ left join (
13
+ select
14
+ enumtypid,
15
+ jsonb_agg(enumlabel order by enumsortorder) as enums
16
+ from
17
+ pg_enum
18
+ group by
19
+ enumtypid
20
+ ) as t_enums on t_enums .enumtypid = t .oid
21
+ left join (
22
+ select
23
+ oid ,
24
+ jsonb_agg(
25
+ jsonb_build_object(' name' , a .attname , ' type_id' , a .atttypid ::int8)
26
+ order by a .attnum asc
27
+ ) as attributes
28
+ from
29
+ pg_class c
30
+ join pg_attribute a on a .attrelid = c .oid
31
+ where
32
+ c .relkind = ' c'
33
+ group by
34
+ c .oid
35
+ ) as t_attributes on t_attributes .oid = t .typrelid
36
+ where
23
37
(
24
38
t .typrelid = 0
25
- OR (
26
- SELECT
39
+ or (
40
+ select
27
41
c .relkind = ' c'
28
- FROM
42
+ from
29
43
pg_class c
30
- WHERE
44
+ where
31
45
c .oid = t .typrelid
32
46
)
33
47
)
Original file line number Diff line number Diff line change @@ -37,7 +37,7 @@ export const postgresColumnSchema = Type.Object({
37
37
is_nullable : Type . Boolean ( ) ,
38
38
is_updatable : Type . Boolean ( ) ,
39
39
is_unique : Type . Boolean ( ) ,
40
- enums : Type . Array ( Type . Unknown ( ) ) ,
40
+ enums : Type . Array ( Type . String ( ) ) ,
41
41
comment : Type . Union ( [ Type . String ( ) , Type . Null ( ) ] ) ,
42
42
} )
43
43
export type PostgresColumn = Static < typeof postgresColumnSchema >
@@ -326,7 +326,13 @@ export const postgresTypeSchema = Type.Object({
326
326
name : Type . String ( ) ,
327
327
schema : Type . String ( ) ,
328
328
format : Type . String ( ) ,
329
- enums : Type . Array ( Type . Unknown ( ) ) ,
329
+ enums : Type . Array ( Type . String ( ) ) ,
330
+ attributes : Type . Array (
331
+ Type . Object ( {
332
+ name : Type . String ( ) ,
333
+ type_id : Type . Integer ( ) ,
334
+ } )
335
+ ) ,
330
336
comment : Type . Union ( [ Type . String ( ) , Type . Null ( ) ] ) ,
331
337
} )
332
338
export type PostgresType = Static < typeof postgresTypeSchema >
You can’t perform that action at this time.
0 commit comments