Anki/proto/anki/ankidroid.proto
Damien Elmes b37063e20a More service generation refactoring
- Dropped the protobuf extensions in favor of explicitly listing out
methods in both services if we want to implement both, as it's clearer.
- Move Service/Method wrappers into a separate crate that the various
clients can import, to easily get at the list of backend services and
their correct indices and comments.
2023-06-22 09:46:09 +10:00

79 lines
No EOL
2.1 KiB
Protocol Buffer

syntax = "proto3";
option java_multiple_files = true;
import "anki/generic.proto";
import "anki/scheduler.proto";
package anki.ankidroid;
service AnkidroidService {
rpc RunDbCommand(generic.Json) returns (generic.Json);
rpc RunDbCommandProto(generic.Json) returns (DbResponse);
rpc InsertForId(generic.Json) returns (generic.Int64);
rpc RunDbCommandForRowCount(generic.Json) returns (generic.Int64);
rpc FlushAllQueries(generic.Empty) returns (generic.Empty);
rpc FlushQuery(generic.Int32) returns (generic.Empty);
rpc GetNextResultPage(GetNextResultPageRequest) returns (DbResponse);
rpc GetColumnNamesFromQuery(generic.String) returns (generic.StringList);
rpc GetActiveSequenceNumbers(generic.Empty)
returns (GetActiveSequenceNumbersResponse);
}
// Implicitly includes any of the above methods that are not listed in the
// backend service.
service BackendAnkidroidService {
rpc SchedTimingTodayLegacy(SchedTimingTodayLegacyRequest)
returns (scheduler.SchedTimingTodayResponse);
rpc LocalMinutesWestLegacy(generic.Int64) returns (generic.Int32);
rpc SetPageSize(generic.Int64) returns (generic.Empty);
rpc DebugProduceError(generic.String) returns (generic.Empty);
}
message DebugActiveDatabaseSequenceNumbersResponse {
repeated int32 sequence_numbers = 1;
}
message SchedTimingTodayLegacyRequest {
int64 created_secs = 1;
optional sint32 created_mins_west = 2;
int64 now_secs = 3;
sint32 now_mins_west = 4;
sint32 rollover_hour = 5;
}
// We expect in Java: Null, String, Short, Int, Long, Float, Double, Boolean,
// Blob (unused) We get: DbResult (Null, String, i64, f64, Vec<u8>), which
// matches SQLite documentation
message SqlValue {
oneof Data {
string stringValue = 1;
int64 longValue = 2;
double doubleValue = 3;
bytes blobValue = 4;
}
}
message Row {
repeated SqlValue fields = 1;
}
message DbResult {
repeated Row rows = 1;
}
message DbResponse {
DbResult result = 1;
int32 sequenceNumber = 2;
int32 rowCount = 3;
int64 startIndex = 4;
}
message GetNextResultPageRequest {
int32 sequence = 1;
int64 index = 2;
}
message GetActiveSequenceNumbersResponse {
repeated int32 numbers = 1;
}