option values are aliased always from now on

This commit is contained in:
Filipriec
2026-09-01 10:21:34 +02:00
parent 71deac74ba
commit 7263003684
4 changed files with 166 additions and 2 deletions

View File

@@ -62,6 +62,10 @@ service TableDefinition {
// Physical column names and identities remain unchanged.
rpc SetColumnPresentation(SetColumnPresentationRequest) returns (SetColumnPresentationResponse);
// Replaces the optional user-visible aliases for a fixed-option column.
// Stored values remain stable machine values and scripts never depend on labels.
rpc SetColumnOptionAliases(SetColumnOptionAliasesRequest) returns (SetColumnOptionAliasesResponse);
// Shows or hides one column in bundled data-entry forms. This is presentation
// metadata only: hidden columns remain available to data APIs, scripts and
// backend calculations.
@@ -525,6 +529,10 @@ message ColumnBehavior {
// True when bundled data-entry clients should not render this column.
// This is not an authorization boundary; data APIs still expose the column.
bool hidden_from_forms = 6;
// User-selected labels for stable option values. Empty means clients display
// the canonical value. Writes may submit either value or alias.
repeated OptionValueAlias option_value_aliases = 7;
}
// A script that targets a specific column in a table.
@@ -561,6 +569,30 @@ message SetColumnPresentationResponse {
int64 row_version = 4;
}
// One stable machine value and its optional user-visible/input alias.
message OptionValueAlias {
string value = 1;
string alias = 2;
}
message SetColumnOptionAliasesRequest {
string profile_name = 1;
string table_name = 2;
int64 column_id = 3;
// Partial sets are supported; omitted values use their canonical spelling.
// An empty list removes every alias from the column.
repeated OptionValueAlias aliases = 4;
int64 expected_row_version = 5;
}
message SetColumnOptionAliasesResponse {
bool success = 1;
string message = 2;
int64 column_id = 3;
repeated OptionValueAlias aliases = 4;
int64 row_version = 5;
}
message SetColumnFormVisibilityRequest {
string profile_name = 1;
string table_name = 2;