c77_dep/c77_dep--1.0.0.sql

135 lines
5.8 KiB
PL/PgSQL

/* ================================================================
* c77_dep extension version 1.0.0
* PostgreSQL Database Dependency Mapping Tool
*
* This extension provides tools for analyzing and visualizing
* dependencies between database objects.
* ================================================================
*/
-- Complain if script is sourced in psql, rather than via CREATE EXTENSION
\echo Use "CREATE EXTENSION c77_dep" to load this file. \quit
-- Set up the schema
-- Uncomment if you want to use a dedicated schema instead of public
-- CREATE SCHEMA IF NOT EXISTS c77_dep;
-- Core dependency mapping view (base version)
CREATE OR REPLACE VIEW public.c77_dep_dependencies_map
AS
WITH RECURSIVE ctedepends AS (
-- Base version view definition goes here...
);
COMMENT ON VIEW public.c77_dep_dependencies_map IS 'Maps dependencies between database objects (tables, views, materialized views)';
-- Enhanced dependency map with foreign tables
CREATE OR REPLACE VIEW public.c77_dep_dependencies_map_with_foreign
AS
WITH RECURSIVE ctedepends AS (
-- Enhanced version view definition goes here...
);
COMMENT ON VIEW public.c77_dep_dependencies_map_with_foreign IS 'Maps dependencies between database objects including foreign tables';
-- Circular Dependency Detector
CREATE OR REPLACE FUNCTION public.c77_dep_detect_circular_dependencies()
RETURNS TABLE(
object1 text,
object2 text,
dependency_type text
) AS $$
BEGIN
-- Function definition goes here...
END;
$$ LANGUAGE plpgsql;
COMMENT ON FUNCTION public.c77_dep_detect_circular_dependencies() IS 'Detects circular dependencies between database objects';
-- Orphaned Objects Tracker
CREATE OR REPLACE VIEW public.c77_dep_orphaned_objects AS
-- View definition goes here...
COMMENT ON VIEW public.c77_dep_orphaned_objects IS 'Identifies database objects with no dependencies or requirements';
-- Schema Complexity Assessment
CREATE OR REPLACE VIEW public.c77_dep_schema_complexity AS
-- View definition goes here...
COMMENT ON VIEW public.c77_dep_schema_complexity IS 'Provides metrics on schema complexity and dependencies';
-- Database Object Type Summary
CREATE OR REPLACE VIEW public.c77_dep_object_type_summary AS
-- View definition goes here...
COMMENT ON VIEW public.c77_dep_object_type_summary IS 'Provides a summary of object types and their dependency characteristics';
-- Dependency Risk Assessment
CREATE OR REPLACE VIEW public.c77_dep_risk_assessment AS
-- View definition goes here...
COMMENT ON VIEW public.c77_dep_risk_assessment IS 'Assesses risk level of modifying database objects based on dependencies';
-- Dependency Hub Objects
CREATE OR REPLACE VIEW public.c77_dep_hub_objects AS
-- View definition goes here...
COMMENT ON VIEW public.c77_dep_hub_objects IS 'Identifies central hub objects with many dependencies';
-- Cleanup Candidates
CREATE OR REPLACE VIEW public.c77_dep_cleanup_candidates AS
-- View definition goes here...
COMMENT ON VIEW public.c77_dep_cleanup_candidates IS 'Identifies objects that may be candidates for cleanup or refactoring';
-- Impact Analysis Function
CREATE OR REPLACE FUNCTION public.c77_dep_analyze_drop_impact(p_object_name text)
-- Function definition goes here...
COMMENT ON FUNCTION public.c77_dep_analyze_drop_impact(text) IS 'Analyzes impact of dropping a database object by showing affected dependencies';
-- Export dependency graph in DOT format
CREATE OR REPLACE FUNCTION public.c77_dep_export_dependency_graph(
-- Function definition goes here...
COMMENT ON FUNCTION public.c77_dep_export_dependency_graph(text, int, boolean) IS 'Exports dependency graph in DOT format for visualization with Graphviz';
-- Schema change simulation
CREATE OR REPLACE FUNCTION public.c77_dep_simulate_schema_change(
-- Function definition goes here...
COMMENT ON FUNCTION public.c77_dep_simulate_schema_change(text, text) IS 'Simulates the impact of changing a schema name';
-- Migration Order Function
CREATE OR REPLACE FUNCTION public.c77_dep_generate_migration_order()
-- Function definition goes here...
COMMENT ON FUNCTION public.c77_dep_generate_migration_order() IS 'Generates a migration order for objects based on their dependencies';
-- Function to generate a database dependency report
CREATE OR REPLACE FUNCTION public.c77_dep_generate_report(
-- Function definition goes here...
COMMENT ON FUNCTION public.c77_dep_generate_report(text, boolean, boolean) IS 'Generates a comprehensive dependency analysis report for the database';
-- Extension setup completion
DO $$
BEGIN
RAISE NOTICE 'c77_dep extension version 1.0.0 has been successfully installed.';
RAISE NOTICE 'Use the following views and functions to analyze database dependencies:';
RAISE NOTICE '- c77_dep_dependencies_map - Base dependency map';
RAISE NOTICE '- c77_dep_dependencies_map_with_foreign - Enhanced dependency map with foreign tables';
RAISE NOTICE '- c77_dep_orphaned_objects - Objects with no dependencies';
RAISE NOTICE '- c77_dep_schema_complexity - Schema complexity metrics';
RAISE NOTICE '- c77_dep_object_type_summary - Summary of object types';
RAISE NOTICE '- c77_dep_risk_assessment - Risk assessment for schema changes';
RAISE NOTICE '- c77_dep_hub_objects - Objects with many dependencies';
RAISE NOTICE '- c77_dep_cleanup_candidates - Objects that might need cleanup';
RAISE NOTICE '- c77_dep_analyze_drop_impact() - Analyze impact of dropping an object';
RAISE NOTICE '- c77_dep_detect_circular_dependencies() - Detect circular dependencies';
RAISE NOTICE '- c77_dep_export_dependency_graph() - Export dependencies in DOT format';
RAISE NOTICE '- c77_dep_simulate_schema_change() - Simulate schema rename impact';
RAISE NOTICE '- c77_dep_generate_migration_order() - Generate suggested migration order';
RAISE NOTICE '- c77_dep_generate_report() - Generate dependency analysis report';
END
$$;