put table definition2 - name change
This commit is contained in:
@@ -279,7 +279,9 @@ pub(crate) async fn load_page(
|
||||
|| tables
|
||||
.iter()
|
||||
.any(|table| table.name == inputs.selection.table && table.global);
|
||||
inputs.columns.table_name = inputs.selection.table.clone();
|
||||
if inputs.columns.table_name.is_empty() {
|
||||
inputs.columns.table_name = inputs.selection.table.clone();
|
||||
}
|
||||
|
||||
Ok(TableDefinitionPageState {
|
||||
nav: crate::ui::Nav::from_authorization(headers, "admin", &authorization),
|
||||
|
||||
@@ -27,7 +27,7 @@ use crate::{
|
||||
PutTableDefinitionRequest,
|
||||
},
|
||||
{i18n::Locale, tr},
|
||||
schema::{ColumnForm, proto_columns},
|
||||
schema::{ColumnForm, proto_columns, validate_table_name},
|
||||
services::{authenticated_request, reject_cross_site},
|
||||
};
|
||||
|
||||
@@ -189,6 +189,7 @@ pub(crate) async fn update_columns(
|
||||
|
||||
let mut inputs = PageInputs::for_selection(selection);
|
||||
inputs.columns = form.to_draft(catalog, false);
|
||||
inputs.columns.table_name = form.table_name_input.trim().to_string();
|
||||
|
||||
let index = form.index.unwrap_or(0);
|
||||
let locale = Locale::from_headers(&headers);
|
||||
@@ -239,6 +240,7 @@ pub(crate) async fn add_columns(
|
||||
|
||||
let mut inputs = PageInputs::for_selection(selection);
|
||||
inputs.columns = form.to_draft(catalog.clone(), false);
|
||||
inputs.columns.table_name = form.table_name_input.trim().to_string();
|
||||
inputs.remove_column_ids = form.remove_column_ids.clone();
|
||||
|
||||
if !inputs.selection.has_table() {
|
||||
@@ -255,7 +257,21 @@ pub(crate) async fn add_columns(
|
||||
)
|
||||
.await;
|
||||
}
|
||||
if inputs.columns.is_empty() && inputs.remove_column_ids.is_empty() {
|
||||
let requested_table_name = if inputs.columns.table_name.is_empty() {
|
||||
inputs.selection.table.clone()
|
||||
} else {
|
||||
inputs.columns.table_name.clone()
|
||||
};
|
||||
let renaming = requested_table_name != inputs.selection.table;
|
||||
if renaming
|
||||
&& let Some(message) = validate_table_name(
|
||||
Locale::from_headers(&headers),
|
||||
&requested_table_name,
|
||||
)
|
||||
{
|
||||
return refuse(state, headers, inputs, Page::AddColumns, message).await;
|
||||
}
|
||||
if inputs.columns.is_empty() && inputs.remove_column_ids.is_empty() && !renaming {
|
||||
let message = tr!(
|
||||
Locale::from_headers(&headers),
|
||||
"td-err-describe-change"
|
||||
@@ -314,6 +330,7 @@ pub(crate) async fn add_columns(
|
||||
add_indexes: inputs.columns.selected_index_names(),
|
||||
generated_aliases: Vec::new(),
|
||||
expected_row_version: form.expected_row_version,
|
||||
new_table_name: requested_table_name.clone(),
|
||||
};
|
||||
let Ok(request) = authenticated_request(&headers, request) else {
|
||||
return Redirect::to("/login").into_response();
|
||||
@@ -330,9 +347,11 @@ pub(crate) async fn add_columns(
|
||||
"td-definition-adjusted",
|
||||
"added" => added as i64,
|
||||
"removed" => removed as i64,
|
||||
"table" => inputs.selection.table.clone(),
|
||||
"table" => requested_table_name.clone(),
|
||||
));
|
||||
inputs.selection.table = requested_table_name.clone();
|
||||
inputs.columns = crate::schema::ColumnDraft::for_append(catalog);
|
||||
inputs.columns.table_name = requested_table_name;
|
||||
inputs.remove_column_ids.clear();
|
||||
respond(state, headers, inputs, Page::AddColumns, StatusCode::OK).await
|
||||
}
|
||||
|
||||
@@ -456,6 +456,7 @@ mod tests {
|
||||
let add_html = render_add_columns_page(&page());
|
||||
assert!(add_html.contains(r#"id="column-form""#), "{add_html}");
|
||||
assert!(add_html.contains(r#"name="expected_row_version" value="1""#), "{add_html}");
|
||||
assert!(add_html.contains(r#"name="table_name_input" value="invoice""#), "{add_html}");
|
||||
assert!(add_html.contains(r#"name="remove_column_ids" value="1""#), "{add_html}");
|
||||
assert!(add_html.contains("Adjust table"), "{add_html}");
|
||||
assert!(!add_html.contains(r#"name="alias""#), "{add_html}");
|
||||
|
||||
@@ -1422,6 +1422,10 @@ pub(crate) struct ColumnForm {
|
||||
pub remove_column_ids: Vec<i64>,
|
||||
#[serde(default)]
|
||||
pub expected_row_version: i64,
|
||||
/// The requested name of an existing empty table. The append-only form
|
||||
/// does not render it, so populated tables decode this as empty.
|
||||
#[serde(default)]
|
||||
pub table_name_input: String,
|
||||
|
||||
#[serde(default)]
|
||||
pub column_name_input: String,
|
||||
|
||||
Reference in New Issue
Block a user