seaography_discoverer/
mysql.rs

1use sea_schema::mysql::{def::TableDef, discovery::SchemaDiscovery};
2use sqlx::MySqlPool;
3
4use crate::{Result, TablesHashMap};
5
6pub async fn explore_mysql(url: &str) -> Result<TablesHashMap> {
7    let connection = MySqlPool::connect(url).await?;
8
9    let schema = url
10        .split('/')
11        .last()
12        .ok_or("schema not found in database url")?;
13
14    let schema_discovery = SchemaDiscovery::new(connection, schema);
15
16    let schema = schema_discovery.discover().await;
17
18    let tables: TablesHashMap = schema
19        .tables
20        .iter()
21        .map(|table: &TableDef| (table.info.name.clone(), table.write()))
22        .collect();
23
24    Ok(tables)
25}