feat(xugu): expose table child metadata

This commit is contained in:
Elias authored and GitHub committed 2026-07-24 16:47:13 +08:00
1 parent 6ddfa8bd24
commit 0362fef273
33 files changed
+1269 -33

No files matched your search

+3
View File
@@ -298,6 +298,9 @@ async fn main() {
.route("/schema/indexes", get(routes::schema::list_indexes))
.route("/schema/foreign-keys", get(routes::schema::list_foreign_keys))
.route("/schema/triggers", get(routes::schema::list_triggers))
.route("/schema/constraints", get(routes::schema::list_constraints))
.route("/schema/partitions", get(routes::schema::list_partitions))
.route("/schema/subpartitions", get(routes::schema::list_subpartitions))
.route("/schema/functions", get(routes::schema::list_functions))
.route("/schema/sequences", get(routes::schema::list_sequences))
.route("/schema/rules", get(routes::schema::list_rules))
+39
View File
@@ -403,6 +403,45 @@ pub async fn list_triggers(
Ok(Json(serde_json::to_value(result).map_err(|e| AppError::from(e.to_string()))?))
}
pub async fn list_constraints(
State(state): State<Arc<WebState>>,
Query(q): Query<SchemaQuery>,
) -> Result<Json<serde_json::Value>, AppError> {
let database = q.database.as_deref().unwrap_or("");
let schema = q.schema.as_deref().unwrap_or("");
let table = q.table.as_deref().unwrap_or("");
let result = dbx_core::schema::list_constraints_core(&state.app, &q.connection_id, database, schema, table)
.await
.map_err(AppError::from)?;
Ok(Json(serde_json::to_value(result).map_err(|e| AppError::from(e.to_string()))?))
}
pub async fn list_partitions(
State(state): State<Arc<WebState>>,
Query(q): Query<SchemaQuery>,
) -> Result<Json<serde_json::Value>, AppError> {
let database = q.database.as_deref().unwrap_or("");
let schema = q.schema.as_deref().unwrap_or("");
let table = q.table.as_deref().unwrap_or("");
let result = dbx_core::schema::list_partitions_core(&state.app, &q.connection_id, database, schema, table)
.await
.map_err(AppError::from)?;
Ok(Json(serde_json::to_value(result).map_err(|e| AppError::from(e.to_string()))?))
}
pub async fn list_subpartitions(
State(state): State<Arc<WebState>>,
Query(q): Query<SchemaQuery>,
) -> Result<Json<serde_json::Value>, AppError> {
let database = q.database.as_deref().unwrap_or("");
let schema = q.schema.as_deref().unwrap_or("");
let table = q.table.as_deref().unwrap_or("");
let result = dbx_core::schema::list_subpartitions_core(&state.app, &q.connection_id, database, schema, table)
.await
.map_err(AppError::from)?;
Ok(Json(serde_json::to_value(result).map_err(|e| AppError::from(e.to_string()))?))
}
pub async fn get_ddl(
State(state): State<Arc<WebState>>,
Query(q): Query<SchemaQuery>,