104 lines
4.3 KiB
Protocol Buffer
104 lines
4.3 KiB
Protocol Buffer
syntax = "proto3";
|
|
|
|
package cosmos.orm.v1;
|
|
|
|
import "google/protobuf/descriptor.proto";
|
|
|
|
extend google.protobuf.MessageOptions {
|
|
|
|
// table specifies that this message will be used as an ORM table. It cannot
|
|
// be used together with the singleton option.
|
|
TableDescriptor table = 104503790;
|
|
|
|
// singleton specifies that this message will be used as an ORM singleton. It cannot
|
|
// be used together with the table option.
|
|
SingletonDescriptor singleton = 104503791;
|
|
}
|
|
|
|
// TableDescriptor describes an ORM table.
|
|
message TableDescriptor {
|
|
|
|
// primary_key defines the primary key for the table.
|
|
PrimaryKeyDescriptor primary_key = 1;
|
|
|
|
// index defines one or more secondary indexes.
|
|
repeated SecondaryIndexDescriptor index = 2;
|
|
|
|
// id is a non-zero integer ID that must be unique within the
|
|
// tables and singletons in this file. It may be deprecated in the future when this
|
|
// can be auto-generated.
|
|
uint32 id = 3;
|
|
}
|
|
|
|
// PrimaryKeyDescriptor describes a table primary key.
|
|
message PrimaryKeyDescriptor {
|
|
|
|
// fields is a comma-separated list of fields in the primary key. Spaces are
|
|
// not allowed. Supported field types, their encodings, and any applicable constraints
|
|
// are described below.
|
|
// - uint32 are encoded as 2,3,4 or 5 bytes using a compact encoding that
|
|
// is suitable for sorted iteration (not varint encoding). This type is
|
|
// well-suited for small integers.
|
|
// - uint64 are encoded as 2,4,6 or 9 bytes using a compact encoding that
|
|
// is suitable for sorted iteration (not varint encoding). This type is
|
|
// well-suited for small integers such as auto-incrementing sequences.
|
|
// - fixed32, fixed64 are encoded as big-endian fixed width bytes and support
|
|
// sorted iteration. These types are well-suited for encoding fixed with
|
|
// decimals as integers.
|
|
// - string's are encoded as raw bytes in terminal key segments and null-terminated
|
|
// in non-terminal segments. Null characters are thus forbidden in strings.
|
|
// string fields support sorted iteration.
|
|
// - bytes are encoded as raw bytes in terminal segments and length-prefixed
|
|
// with a 32-bit unsigned varint in non-terminal segments.
|
|
// - int32, sint32, int64, sint64, sfixed32, sfixed64 are encoded as fixed width bytes with
|
|
// an encoding that enables sorted iteration.
|
|
// - google.protobuf.Timestamp and google.protobuf.Duration are encoded
|
|
// as 12 bytes using an encoding that enables sorted iteration.
|
|
// - enum fields are encoded using varint encoding and do not support sorted
|
|
// iteration.
|
|
// - bool fields are encoded as a single byte 0 or 1.
|
|
//
|
|
// All other fields types are unsupported in keys including repeated and
|
|
// oneof fields.
|
|
//
|
|
// Primary keys are prefixed by the varint encoded table id and the byte 0x0
|
|
// plus any additional prefix specified by the schema.
|
|
string fields = 1;
|
|
|
|
// auto_increment specifies that the primary key is generated by an
|
|
// auto-incrementing integer. If this is set to true fields must only
|
|
// contain one field of that is of type uint64.
|
|
bool auto_increment = 2;
|
|
}
|
|
|
|
// PrimaryKeyDescriptor describes a table secondary index.
|
|
message SecondaryIndexDescriptor {
|
|
|
|
// fields is a comma-separated list of fields in the index. The supported
|
|
// field types are the same as those for PrimaryKeyDescriptor.fields.
|
|
// Index keys are prefixed by the varint encoded table id and the varint
|
|
// encoded index id plus any additional prefix specified by the schema.
|
|
//
|
|
// In addition the field segments, non-unique index keys are suffixed with
|
|
// any additional primary key fields not present in the index fields so that the
|
|
// primary key can be reconstructed. Unique indexes instead of being suffixed
|
|
// store the remaining primary key fields in the value..
|
|
string fields = 1;
|
|
|
|
// id is a non-zero integer ID that must be unique within the indexes for this
|
|
// table and less than 32768. It may be deprecated in the future when this can
|
|
// be auto-generated.
|
|
uint32 id = 2;
|
|
|
|
// unique specifies that this an unique index.
|
|
bool unique = 3;
|
|
}
|
|
|
|
// TableDescriptor describes an ORM singleton table which has at most one instance.
|
|
message SingletonDescriptor {
|
|
|
|
// id is a non-zero integer ID that must be unique within the
|
|
// tables and singletons in this file. It may be deprecated in the future when this
|
|
// can be auto-generated.
|
|
uint32 id = 1;
|
|
} |