47 lines
1.1 KiB
Protocol Buffer
47 lines
1.1 KiB
Protocol Buffer
// In common/proto/search2.proto
|
|
syntax = "proto3";
|
|
package komp_ac.search2;
|
|
|
|
service Search2 {
|
|
rpc SearchTable(Search2Request) returns (Search2Response);
|
|
}
|
|
|
|
message Search2Request {
|
|
string profile_name = 1;
|
|
string table_name = 2;
|
|
repeated ColumnFilter column_filters = 3;
|
|
optional string text_query = 4; // Optional fallback text search
|
|
optional int32 limit = 5;
|
|
optional string order_by = 6;
|
|
optional bool order_desc = 7;
|
|
}
|
|
|
|
message ColumnFilter {
|
|
string column_name = 1;
|
|
FilterType filter_type = 2;
|
|
string value = 3;
|
|
optional string value2 = 4; // For range queries
|
|
}
|
|
|
|
enum FilterType {
|
|
EQUALS = 0;
|
|
CONTAINS = 1;
|
|
STARTS_WITH = 2;
|
|
ENDS_WITH = 3;
|
|
RANGE = 4;
|
|
GREATER_THAN = 5;
|
|
LESS_THAN = 6;
|
|
IS_NULL = 7;
|
|
IS_NOT_NULL = 8;
|
|
}
|
|
|
|
message Search2Response {
|
|
message Hit {
|
|
int64 id = 1;
|
|
string content_json = 2; // No score - this is SQL-based
|
|
optional string match_info = 3; // Info about which columns matched
|
|
}
|
|
repeated Hit hits = 1;
|
|
int32 total_count = 2; // Total matching records (for pagination)
|
|
}
|