File size: 778 Bytes
d2c5e3d
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
-- server/resources/sql/list_columns_in_table.sql
-- Returns column metadata for a specific table as a JSON object
-- Uses parameters: :schema_name, :table_name

WITH columns AS (
    SELECT
        cols.column_name,
        cols.data_type,
        col_description(('"' || cols.table_schema || '"."' || cols.table_name || '"')::regclass, cols.ordinal_position) AS description
    FROM information_schema.columns cols
    WHERE cols.table_schema = %(schema_name)s
      AND cols.table_name = %(table_name)s
    ORDER BY cols.ordinal_position
)
SELECT jsonb_build_object(
    'columns',
    jsonb_agg(
        jsonb_build_object(
            'name', column_name,
            'type', data_type,
            'description', description
        )
    )
) AS column_list
FROM columns;