/** * Database Queries Module * Contains SQL queries for database introspection */ /** * Get all tables in a schema with basic metadata */ export declare const GET_TABLES_QUERY = "\n SELECT DISTINCT\n t.table_name,\n t.table_type,\n t.table_schema,\n COALESCE(obj_description(c.oid), '') as table_comment\n FROM information_schema.tables t\n LEFT JOIN pg_class c ON c.relname = t.table_name\n LEFT JOIN pg_namespace n ON n.oid = c.relnamespace AND n.nspname = t.table_schema\n WHERE t.table_schema = $1\n AND t.table_type = 'BASE TABLE'\n ORDER BY t.table_name;\n"; /** * Get all columns for a specific table with detailed metadata */ export declare const GET_TABLE_COLUMNS_QUERY = "\n SELECT DISTINCT\n c.column_name,\n c.ordinal_position,\n c.column_default,\n c.is_nullable,\n c.data_type,\n c.character_maximum_length,\n c.character_octet_length,\n c.numeric_precision,\n c.numeric_scale,\n c.datetime_precision,\n c.interval_type,\n c.udt_name,\n c.is_identity,\n c.identity_generation,\n c.identity_start,\n c.identity_increment,\n c.identity_maximum,\n c.identity_minimum,\n c.identity_cycle,\n c.is_generated,\n c.generation_expression,\n COALESCE(col_description(pgc.oid, c.ordinal_position), '') as column_comment\n FROM information_schema.columns c\n LEFT JOIN pg_class pgc ON pgc.relname = c.table_name AND pgc.relkind = 'r'\n LEFT JOIN pg_namespace pgn ON pgn.oid = pgc.relnamespace AND pgn.nspname = c.table_schema\n WHERE c.table_schema = $1 \n AND c.table_name = $2\n ORDER BY c.ordinal_position;\n"; /** * Get all constraints for a specific table */ export declare const GET_TABLE_CONSTRAINTS_QUERY = "\n SELECT \n tc.constraint_name,\n tc.constraint_type,\n tc.table_name,\n tc.table_schema,\n STRING_AGG(kcu.column_name, ',' ORDER BY kcu.ordinal_position) as column_names,\n ccu.table_name AS foreign_table_name,\n ccu.column_name AS foreign_column_name,\n rc.update_rule,\n rc.delete_rule,\n cc.check_clause,\n tc.is_deferrable,\n tc.initially_deferred\n FROM information_schema.table_constraints tc\n LEFT JOIN information_schema.key_column_usage kcu \n ON tc.constraint_name = kcu.constraint_name \n AND tc.table_schema = kcu.table_schema\n LEFT JOIN information_schema.constraint_column_usage ccu \n ON ccu.constraint_name = tc.constraint_name \n AND ccu.table_schema = tc.table_schema\n LEFT JOIN information_schema.referential_constraints rc \n ON tc.constraint_name = rc.constraint_name \n AND tc.table_schema = rc.constraint_schema\n LEFT JOIN information_schema.check_constraints cc \n ON tc.constraint_name = cc.constraint_name \n AND tc.table_schema = cc.constraint_schema\n WHERE tc.table_schema = $1 \n AND tc.table_name = $2\n GROUP BY tc.constraint_name, tc.constraint_type, tc.table_name, tc.table_schema, \n ccu.table_name, ccu.column_name, rc.update_rule, rc.delete_rule, \n cc.check_clause, tc.is_deferrable, tc.initially_deferred\n ORDER BY tc.constraint_name;\n"; /** * Get all indexes for a specific table */ export declare const GET_TABLE_INDEXES_QUERY = "\n SELECT DISTINCT\n i.indexname,\n i.tablename,\n i.schemaname,\n i.indexdef,\n pg_am.amname as index_type,\n pg_class.reltuples as estimated_rows,\n pg_size_pretty(pg_relation_size(pg_class.oid)) as index_size,\n pg_class.relpages as index_pages,\n CASE \n WHEN i.indexdef LIKE '%UNIQUE%' THEN true \n ELSE false \n END as is_unique,\n CASE \n WHEN i.indexname LIKE '%_pkey' THEN true \n ELSE false \n END as is_primary,\n -- Extract column names from indexdef\n CASE \n WHEN i.indexdef ~ '\\([^)]+\\)' THEN \n SUBSTRING(i.indexdef FROM '\\(([^)]+)\\)')\n ELSE ''\n END as column_names\n FROM pg_indexes i\n LEFT JOIN pg_class ON pg_class.relname = i.indexname\n LEFT JOIN pg_am ON pg_am.oid = pg_class.relam\n WHERE i.schemaname = $1 \n AND i.tablename = $2\n ORDER BY i.indexname;\n"; /** * Get all functions and procedures in a schema */ export declare const GET_FUNCTIONS_QUERY = "\n SELECT \n p.proname as function_name,\n p.prokind as routine_type,\n p.prosrc as function_body,\n p.prolang as language_oid,\n l.lanname as language_name,\n p.provolatile as volatility,\n p.prosecdef as security_definer,\n p.proisstrict as is_strict,\n p.proretset as returns_set,\n p.procost as cost,\n p.prorows as estimated_rows,\n pg_get_function_result(p.oid) as return_type,\n pg_get_function_arguments(p.oid) as arguments,\n pg_get_functiondef(p.oid) as full_definition,\n COALESCE(obj_description(p.oid), '') as function_comment\n FROM pg_proc p\n LEFT JOIN pg_language l ON p.prolang = l.oid\n LEFT JOIN pg_namespace n ON p.pronamespace = n.oid\n WHERE n.nspname = $1\n AND p.prokind IN ('f', 'p') -- 'f' = function, 'p' = procedure\n ORDER BY p.proname;\n"; /** * Get function parameters from information_schema.parameters */ export declare const GET_FUNCTION_PARAMETERS_QUERY = "\n SELECT \n p.specific_name,\n p.parameter_name,\n p.data_type,\n p.parameter_mode,\n p.parameter_default,\n p.ordinal_position,\n proc.proname as function_name\n FROM information_schema.parameters p\n JOIN pg_proc proc ON p.specific_name LIKE '%_' || proc.oid::text\n JOIN pg_namespace n ON proc.pronamespace = n.oid\n WHERE p.specific_schema = $1\n AND p.parameter_name IS NOT NULL\n AND n.nspname = $1\n ORDER BY proc.proname, p.ordinal_position;\n"; /** * Get all triggers for tables in a schema */ export declare const GET_TRIGGERS_QUERY = "\n SELECT \n t.trigger_name,\n t.event_manipulation,\n t.event_object_table,\n t.event_object_schema,\n t.action_timing,\n t.action_orientation,\n t.action_condition,\n t.action_statement,\n t.action_order,\n pg_get_triggerdef(pg_trigger.oid) as full_definition,\n COALESCE(obj_description(pg_trigger.oid), '') as trigger_comment\n FROM information_schema.triggers t\n LEFT JOIN pg_trigger ON pg_trigger.tgname = t.trigger_name\n LEFT JOIN pg_class ON pg_class.oid = pg_trigger.tgrelid\n LEFT JOIN pg_namespace ON pg_namespace.oid = pg_class.relnamespace\n WHERE t.event_object_schema = $1\n ORDER BY t.event_object_table, t.trigger_name;\n"; /** * Get schema information */ export declare const GET_SCHEMA_INFO_QUERY = "\n SELECT \n schema_name,\n schema_owner,\n COALESCE(obj_description(oid), '') as schema_comment\n FROM information_schema.schemata s\n LEFT JOIN pg_namespace n ON n.nspname = s.schema_name\n WHERE schema_name = $1;\n"; /** * Get all sequences in a schema */ export declare const GET_SEQUENCES_QUERY = "\n SELECT \n s.sequence_name,\n s.data_type,\n s.start_value,\n s.minimum_value,\n s.maximum_value,\n s.increment,\n s.cycle_option,\n s.sequence_schema,\n COALESCE(obj_description(pgc.oid), '') as sequence_comment\n FROM information_schema.sequences s\n LEFT JOIN pg_class pgc ON pgc.relname = s.sequence_name\n LEFT JOIN pg_namespace pgn ON pgn.oid = pgc.relnamespace AND pgn.nspname = s.sequence_schema\n WHERE s.sequence_schema = $1\n ORDER BY s.sequence_name;\n"; /** * Get database version and information */ export declare const GET_DATABASE_INFO_QUERY = "\n SELECT \n version() as version,\n current_database() as database_name,\n current_user as current_user,\n session_user as session_user,\n inet_server_addr() as server_address,\n inet_server_port() as server_port;\n"; //# sourceMappingURL=queries.d.ts.map