script.sql
creates a JSON
{...}
From this PostgreSQL schema overview, I want you to give a nicely formatted context prompt for my agent named "SQL Expert", be precise and help my agents with this raw data
WITH | |
table_info AS ( | |
SELECT | |
t.table_schema, | |
t.table_name, | |
obj_description(pgc.oid) AS table_description, | |
pg_size_pretty(pg_total_relation_size(pgc.oid)) AS table_size, | |
pg_stat_get_live_tuples(pgc.oid) AS row_count | |
FROM | |
information_schema.tables t | |
JOIN | |
pg_class pgc ON pgc.relname = t.table_name | |
JOIN | |
pg_namespace nsp ON nsp.oid = pgc.relnamespace AND nsp.nspname = t.table_schema | |
WHERE | |
t.table_schema = 'public' | |
AND t.table_type = 'BASE TABLE' | |
), | |
column_info AS ( | |
SELECT | |
c.table_schema, | |
c.table_name, | |
c.column_name, | |
c.data_type, | |
c.column_default, | |
c.is_nullable, | |
c.character_maximum_length, | |
c.numeric_precision, | |
c.numeric_scale, | |
col_description(pgc.oid, c.ordinal_position) AS column_description | |
FROM | |
information_schema.columns c | |
JOIN | |
pg_class pgc ON pgc.relname = c.table_name | |
JOIN | |
pg_namespace nsp ON nsp.oid = pgc.relnamespace AND nsp.nspname = c.table_schema | |
WHERE | |
c.table_schema = 'public' | |
), | |
constraint_info AS ( | |
SELECT | |
tc.table_schema, | |
tc.table_name, | |
tc.constraint_name, | |
tc.constraint_type, | |
kcu.column_name, | |
ccu.table_schema AS foreign_table_schema, | |
ccu.table_name AS foreign_table_name, | |
ccu.column_name AS foreign_column_name | |
FROM | |
information_schema.table_constraints tc | |
JOIN | |
information_schema.key_column_usage kcu ON tc.constraint_name = kcu.constraint_name | |
AND tc.table_schema = kcu.table_schema | |
LEFT JOIN | |
information_schema.constraint_column_usage ccu ON ccu.constraint_name = tc.constraint_name | |
AND ccu.table_schema = tc.table_schema | |
WHERE | |
tc.table_schema = 'public' | |
), | |
index_info AS ( | |
SELECT | |
schemaname AS table_schema, | |
tablename AS table_name, | |
indexname AS index_name, | |
indexdef AS index_definition | |
FROM | |
pg_indexes | |
WHERE | |
schemaname = 'public' | |
) | |
SELECT json_build_object( | |
'database_info', ( | |
SELECT json_build_object( | |
'database_name', current_database(), | |
'database_size', pg_size_pretty(pg_database_size(current_database())), | |
'version', version() | |
) | |
), | |
'tables', ( | |
SELECT json_agg(json_build_object( | |
'schema', table_schema, | |
'name', table_name, | |
'description', table_description, | |
'size', table_size, | |
'row_count', row_count, | |
'columns', ( | |
SELECT json_agg(json_build_object( | |
'name', column_name, | |
'data_type', data_type, | |
'default', column_default, | |
'is_nullable', is_nullable, | |
'max_length', character_maximum_length, | |
'numeric_precision', numeric_precision, | |
'numeric_scale', numeric_scale, | |
'description', column_description | |
)) | |
FROM column_info ci | |
WHERE ci.table_schema = ti.table_schema AND ci.table_name = ti.table_name | |
), | |
'constraints', ( | |
SELECT json_agg(json_build_object( | |
'name', constraint_name, | |
'type', constraint_type, | |
'column', column_name, | |
'foreign_table_schema', foreign_table_schema, | |
'foreign_table', foreign_table_name, | |
'foreign_column', foreign_column_name | |
)) | |
FROM constraint_info coi | |
WHERE coi.table_schema = ti.table_schema AND coi.table_name = ti.table_name | |
), | |
'indexes', ( | |
SELECT json_agg(json_build_object( | |
'name', index_name, | |
'definition', index_definition | |
)) | |
FROM index_info ii | |
WHERE ii.table_schema = ti.table_schema AND ii.table_name = ti.table_name | |
) | |
)) | |
FROM table_info ti | |
) | |
) AS database_metadata; |