multirow reference in the client

This commit is contained in:
Priec
2026-07-29 11:34:08 +02:00
parent 33a5f47b42
commit 76a5f76194
17 changed files with 105 additions and 90 deletions

View File

@@ -44,9 +44,9 @@ message SearchResponse {
float score = 2;
string content_json = 3;
string table_name = 4;
// Configured human-readable value for this row.
string row_display_value = 5;
string row_display_column = 6;
// Configured human-readable values for this row, in display order.
repeated string row_display_values = 5;
repeated string row_display_columns = 6;
optional uint64 position = 7;
}
repeated Hit hits = 1;

View File

@@ -40,8 +40,8 @@ message Search2Response {
int64 id = 1;
string content_json = 2; // No score - this is SQL-based
optional string match_info = 3; // Info about which columns matched
string row_display_value = 4; // Configured human-readable value for this row
string row_display_column = 5;
repeated string row_display_values = 4; // Configured human-readable values for this row
repeated string row_display_columns = 5;
}
repeated Hit hits = 1;
int32 total_count = 2; // Total matching records (for pagination)

View File

@@ -86,9 +86,10 @@ message PostTableDefinitionRequest {
// ISO-4217 base currency used by every MONEY column in this table.
string base_currency = 6;
// Column whose value identifies a row to users in pickers. "id" is always
// valid; otherwise this must name one of the user-defined columns above.
string row_display_column = 7;
// Columns whose values identify a row to users in pickers, in the order
// they are shown. Each must name one of the user-defined columns above.
// Empty means the row is identified by its id alone.
repeated string row_display_columns = 7;
// ISO-4217 currency the profile keeps its accounting in. A profile is one
// accounting entity and keeps one set of books, so this is required only when
@@ -117,7 +118,7 @@ message CreateInvoiceTemplateTableRequest {
string table_name = 2;
string typst_source = 3;
string base_currency = 4;
string row_display_column = 5;
repeated string row_display_columns = 5;
}
// One physical dynamic table created for an invoice template scope. The root
@@ -225,8 +226,8 @@ message ProfileTreeResponse {
// Other tables this one references (based on link definitions only).
repeated string depends_on = 3;
// Column whose value is used as the human-readable row label.
string row_display_column = 4;
// Columns whose values make up the human-readable row label, in order.
repeated string row_display_columns = 4;
// "dynamic" for user-defined tables, "system" for backend-managed tables.
string table_kind = 5;
@@ -304,7 +305,7 @@ message TableDetail {
repeated ColumnDefinition columns = 3;
repeated ScriptInfo scripts = 4;
string base_currency = 5;
string row_display_column = 6;
repeated string row_display_columns = 6;
map<string, ColumnBehavior> column_behaviors = 7;
string table_kind = 8;
}

View File

@@ -271,10 +271,11 @@ message GetTableDataResponse {
// (NULL becomes ""). The row is returned only if deleted = FALSE.
map<string, string> data = 1;
// Configured human-readable value for this row. Empty when that column is
// NULL/empty; clients should then visibly fall back to the row id.
string row_display_value = 2;
string row_display_column = 3;
// Configured human-readable values for this row, in display order. A value
// is empty when its column is NULL/empty; an empty list means the row is
// identified by its id alone.
repeated string row_display_values = 2;
repeated string row_display_columns = 3;
}
// Count non-deleted rows.