// Copyright 2013 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
//
// Protocol buffer definitions for Drive backend of Syncable FileSystem.

syntax = "proto2";

option optimize_for = LITE_RUNTIME;

package sync_file_system.drive_backend;

enum FileKind {
  FILE_KIND_UNSUPPORTED = 0;
  FILE_KIND_FILE = 1;
  FILE_KIND_FOLDER = 2;
}

enum TrackerKind {
  TRACKER_KIND_REGULAR = 0;
  TRACKER_KIND_APP_ROOT = 1;
  TRACKER_KIND_DISABLED_APP_ROOT = 2;
}

message ServiceMetadata {
  optional int64 largest_change_id = 1;
  optional int64 sync_root_tracker_id = 2;

  // The sequence number of FileTrackers. Must be positive.
  optional int64 next_tracker_id = 3;
}

// Holds details of file/folder metadata.
message FileDetails {
  repeated string parent_folder_ids = 1;

  optional string title = 2;
  optional FileKind file_kind = 3;
  optional string md5 = 4;
  optional string etag = 5;

  // Creation time and modification time of the resource.
  // Serialized by Time::ToInternalValue.
  optional int64 creation_time = 6;
  optional int64 modification_time = 7;

  optional bool missing = 8;
  optional int64 change_id = 9;
}

// Represents a server-side file.
message FileMetadata {
  // File ID of the remote file/folder which the FileMetadata represents.
  required string file_id = 1;

  optional FileDetails details = 2;
}

// Represents synced local file.
message FileTracker {
  // A unique sequence number to identify the tracker. Must be positive.
  required int64 tracker_id = 1;

  // Points the parent tracker in the tracker tree.  0 if there's no parent.
  required int64 parent_tracker_id = 2;

  required string file_id = 3;

  optional string app_id = 4;
  optional TrackerKind tracker_kind = 5;

  // Available on an active tracker.
  // Represents detailed file information on last remote-to-local sync.
  optional FileDetails synced_details = 6;

  // True if the file is changed since the last update for this file.
  optional bool dirty = 7;

  // True if the FileTracker is active.
  // Remote file modification should only be applied to active trackers.
  // Active FileTracker must have a unique title under its parent.
  optional bool active = 8;

  // Valid only for folders.
  // True if the folder contents have not yet been fetched.
  optional bool needs_folder_listing = 9;
}
