// In common/proto/search.proto syntax = "proto3"; package komp_ac.search; service Searcher { rpc Search(SearchRequest) returns (SearchResponse); } enum MatchMode { MATCH_MODE_UNSPECIFIED = 0; MATCH_MODE_FUZZY = 1; MATCH_MODE_EXACT = 2; } message ColumnConstraint { string column = 1; string query = 2; MatchMode mode = 3; } message SearchRequest { string profile_name = 1; optional string table_name = 2; string free_query = 3; repeated ColumnConstraint must = 4; optional uint32 limit = 5; } message SearchResponse { message Hit { int64 id = 1; // PostgreSQL row ID float score = 2; string content_json = 3; string table_name = 4; } repeated Hit hits = 1; }