sabiql 3.0.0

A fast, driver-less TUI for browsing and editing PostgreSQL, MySQL, and SQLite databases
use crate::tests::harness;

use harness::fixtures;
use harness::{
    create_test_state, create_test_terminal, create_test_terminal_sized, postgres_connected_state,
    render_and_get_buffer_at, render_to_string, test_instant,
};

use std::sync::Arc;

use sabiql_app::model::connection::error::ConnectionErrorInfo;
use sabiql_app::model::connection::setup::ConnectionField;
use sabiql_app::model::shared::focused_pane::FocusedPane;
use sabiql_app::model::shared::input_mode::InputMode;
use sabiql_app::model::shared::text_input::TextInputState;
use sabiql_app::model::sql_editor::completion::{CompletionCandidate, CompletionKind};
use sabiql_app::model::sql_editor::modal::{AdhocSuccessSnapshot, SqlModalTab};
use sabiql_app::policy::json::json_diff::compute_json_diff;
use sabiql_app::policy::write::write_guardrails::{
    AdhocRiskDecision, ColumnDiff, GuardrailDecision, RiskLevel, TargetSummary, WriteOperation,
    WritePreview,
};
use sabiql_app::ports::outbound::{ConnectionFailureKind, DbOperationError, DdlGenerator};
use sabiql_app::services::AppServices;
use sabiql_domain::{
    ColumnAttributes, CommandTag, DatabaseType, FkAction, ForeignKey, Index, IndexAttributes,
    IndexType, QuerySource, Table,
};

fn trim_line_endings(output: &str) -> String {
    output
        .lines()
        .map(str::trim_end)
        .collect::<Vec<_>>()
        .join("\n")
}

mod confirm_dialogs;
mod connection_flow;
mod connection_management;
mod er_diagram;
mod initial_state;
mod inspector;
mod overlays;
mod result_pane;
mod style_assertions;
mod table_explorer;