syntax = "proto3"; package db; import "repos/protobuf/gogoproto/gogo.proto"; import "lib/protocol/bep.proto"; option (gogoproto.goproto_getters_all) = false; option (gogoproto.sizer_all) = false; option (gogoproto.protosizer_all) = true; option (gogoproto.goproto_unkeyed_all) = false; option (gogoproto.goproto_unrecognized_all) = false; option (gogoproto.goproto_sizecache_all) = false; message FileVersion { protocol.Vector version = 1 [(gogoproto.nullable) = false]; bytes device = 2; bool invalid = 3; bool deleted = 4; } 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; int64 size = 3; int64 modified_s = 5; uint64 modified_by = 12 [(gogoproto.customtype) = "github.com/syncthing/syncthing/lib/protocol.ShortID", (gogoproto.nullable) = false]; protocol.Vector version = 9 [(gogoproto.nullable) = false]; int64 sequence = 10; // repeated BlockInfo Blocks = 16 string symlink_target = 17; bytes blocks_hash = 18; protocol.FileInfoType type = 2; uint32 permissions = 4; int32 modified_ns = 11; int32 block_size = 13 [(gogoproto.customname) = "RawBlockSize"]; // see bep.proto uint32 local_flags = 1000; bool deleted = 6; bool invalid = 7 [(gogoproto.customname) = "RawInvalid"]; bool no_permissions = 8; } // BlockList is the structure used to store block lists message BlockList { repeated protocol.BlockInfo Blocks = 1 [(gogoproto.nullable) = false]; } // BlocksHashOnly is used to only unmarshal the block list hash from a FileInfo message BlocksHashOnly { bytes blocks_hash = 18; } // 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 uint32 localFlags = 18; // the local flag for this count bucket } message CountsSet { repeated Counts counts = 1 [(gogoproto.nullable) = false]; int64 created = 2; // unix nanos }