syntax = "proto3"; package db; import "github.com/gogo/protobuf/gogoproto/gogo.proto"; import "github.com/syncthing/syncthing/lib/protocol/bep.proto"; option (gogoproto.goproto_getters_all) = false; option (gogoproto.sizer_all) = false; option (gogoproto.protosizer_all) = true; message FileVersion { protocol.Vector version = 1 [(gogoproto.nullable) = false]; bytes device = 2; bool invalid = 3; } message VersionList { option (gogoproto.goproto_stringer) = false; repeated FileVersion versions = 1 [(gogoproto.nullable) = false]; } // Must be the same as FileInfo but without the blocks field message FileInfoTruncated { option (gogoproto.goproto_stringer) = false; string name = 1; protocol.FileInfoType type = 2; int64 size = 3; uint32 permissions = 4; int64 modified_s = 5; int32 modified_ns = 11; uint64 modified_by = 12 [(gogoproto.customtype) = "github.com/syncthing/syncthing/lib/protocol.ShortID", (gogoproto.nullable) = false]; bool deleted = 6; bool invalid = 7; bool no_permissions = 8; protocol.Vector version = 9 [(gogoproto.nullable) = false]; int64 sequence = 10; int32 block_size = 13 [(gogoproto.customname) = "RawBlockSize"]; // repeated BlockInfo Blocks = 16 string symlink_target = 17; } // For each folder and device we keep one of these to track the current // counts and sequence. We also keep one for the global state of the folder. message Counts { int32 files = 1; int32 directories = 2; int32 symlinks = 3; int32 deleted = 4; int64 bytes = 5; int64 sequence = 6; // zero for the global state bytes deviceID = 17; // device ID for remote devices, or special values for local/global } message CountsSet { repeated Counts counts = 1 [(gogoproto.nullable) = false]; int64 created = 2; // unix nanos }