mirror of
https://github.com/ankitects/anki.git
synced 2025-09-18 14:02:21 -04:00

- 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.
79 lines
No EOL
2.1 KiB
Protocol Buffer
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;
|
|
} |