seaography_discoverer/
mysql.rs1use 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}