64 lines
2.3 KiB
PL/PgSQL
64 lines
2.3 KiB
PL/PgSQL
-- SIDEL ScriptsManager PostgreSQL Default Data
|
|
-- This script inserts default data for the application
|
|
|
|
-- Default admin user (password should be changed after first login)
|
|
-- Note: This will be handled by the application's init_db.py script
|
|
-- The password hash below corresponds to 'admin123' - CHANGE IN PRODUCTION
|
|
|
|
-- Default application settings
|
|
-- INSERT INTO settings (key, value, description) VALUES
|
|
-- ('app_version', '1.0.0', 'Application version'),
|
|
-- ('backup_enabled', 'true', 'Enable automatic backups'),
|
|
-- ('max_projects_per_user', '50', 'Maximum projects per user'),
|
|
-- ('default_theme', 'light', 'Default UI theme'),
|
|
-- ('default_language', 'en', 'Default interface language')
|
|
-- ON CONFLICT (key) DO NOTHING;
|
|
|
|
-- Default script categories/tags
|
|
-- INSERT INTO script_categories (name, description) VALUES
|
|
-- ('analysis', 'Data analysis scripts'),
|
|
-- ('automation', 'Process automation scripts'),
|
|
-- ('reporting', 'Report generation scripts'),
|
|
-- ('maintenance', 'System maintenance scripts'),
|
|
-- ('development', 'Development and testing scripts')
|
|
-- ON CONFLICT (name) DO NOTHING;
|
|
|
|
-- PostgreSQL-specific maintenance tasks
|
|
-- Create a function to clean up old execution logs
|
|
CREATE OR REPLACE FUNCTION cleanup_old_execution_logs(retention_days INTEGER DEFAULT 30)
|
|
RETURNS INTEGER AS $$
|
|
DECLARE
|
|
deleted_count INTEGER;
|
|
BEGIN
|
|
DELETE FROM execution_logs
|
|
WHERE timestamp < (CURRENT_DATE - INTERVAL '1 day' * retention_days);
|
|
|
|
GET DIAGNOSTICS deleted_count = ROW_COUNT;
|
|
|
|
RETURN deleted_count;
|
|
END;
|
|
$$ LANGUAGE plpgsql;
|
|
|
|
-- Comment the function
|
|
COMMENT ON FUNCTION cleanup_old_execution_logs(INTEGER) IS 'Cleans up execution logs older than specified days';
|
|
|
|
-- Create a function to get database statistics
|
|
CREATE OR REPLACE FUNCTION get_database_stats()
|
|
RETURNS TABLE (
|
|
table_name TEXT,
|
|
row_count BIGINT,
|
|
table_size TEXT
|
|
) AS $$
|
|
BEGIN
|
|
RETURN QUERY
|
|
SELECT
|
|
schemaname||'.'||tablename as table_name,
|
|
n_tup_ins - n_tup_del as row_count,
|
|
pg_size_pretty(pg_total_relation_size(schemaname||'.'||tablename)) as table_size
|
|
FROM pg_stat_user_tables
|
|
ORDER BY pg_total_relation_size(schemaname||'.'||tablename) DESC;
|
|
END;
|
|
$$ LANGUAGE plpgsql;
|
|
|
|
-- Comment the function
|
|
COMMENT ON FUNCTION get_database_stats() IS 'Returns statistics about database tables and sizes'; |