Home | History | Annotate | Download | only in syncable
      1 // Copyright (c) 2009 The Chromium Authors. All rights reserved.
      2 // Use of this source code is governed by a BSD-style license that can be
      3 // found in the LICENSE file.
      4 
      5 #ifndef CHROME_BROWSER_SYNC_SYNCABLE_SYNCABLE_COLUMNS_H_
      6 #define CHROME_BROWSER_SYNC_SYNCABLE_SYNCABLE_COLUMNS_H_
      7 #pragma once
      8 
      9 #include "chrome/browser/sync/syncable/syncable.h"
     10 #include "chrome/browser/sync/syncable/syncable_changes_version.h"
     11 
     12 namespace syncable {
     13 
     14 struct ColumnSpec {
     15   const char* name;
     16   const char* spec;
     17 };
     18 
     19 // Must be in exact same order as fields in syncable.
     20 static const ColumnSpec g_metas_columns[] = {
     21   //////////////////////////////////////
     22   // int64s
     23   {"metahandle", "bigint primary key ON CONFLICT FAIL"},
     24   {"base_version", "bigint default " CHANGES_VERSION_STRING},
     25   {"server_version", "bigint default 0"},
     26   // These timestamps are kept in native file timestamp format.  It is
     27   // up to the syncer to translate to Java time when syncing.
     28   {"mtime", "bigint default 0"},
     29   {"server_mtime", "bigint default 0"},
     30   {"ctime", "bigint default 0"},
     31   {"server_ctime", "bigint default 0"},
     32   {"server_position_in_parent", "bigint default 0"},
     33   // This is the item ID that we store for the embedding application.
     34   {"local_external_id", "bigint default 0"},
     35   //////////////////////////////////////
     36   // Ids
     37   {"id", "varchar(255) default \"r\""},
     38   {"parent_id", "varchar(255) default \"r\""},
     39   {"server_parent_id", "varchar(255) default \"r\""},
     40   {"prev_id", "varchar(255) default \"r\""},
     41   {"next_id", "varchar(255) default \"r\""},
     42   //////////////////////////////////////
     43   // bits
     44   {"is_unsynced", "bit default 0"},
     45   {"is_unapplied_update", "bit default 0"},
     46   {"is_del", "bit default 0"},
     47   {"is_dir", "bit default 0"},
     48   {"server_is_dir", "bit default 0"},
     49   {"server_is_del", "bit default 0"},
     50   //////////////////////////////////////
     51   // Strings
     52   {"non_unique_name", "varchar"},
     53   {"server_non_unique_name", "varchar(255)"},
     54   {"unique_server_tag", "varchar"},
     55   {"unique_client_tag", "varchar"},
     56   //////////////////////////////////////
     57   // Blobs.
     58   {"specifics", "blob"},
     59   {"server_specifics", "blob"},
     60 };
     61 
     62 // At least enforce that there are equal number of column names and fields.
     63 COMPILE_ASSERT(arraysize(g_metas_columns) >= FIELD_COUNT, missing_column_name);
     64 COMPILE_ASSERT(arraysize(g_metas_columns) <= FIELD_COUNT, extra_column_names);
     65 
     66 static inline const char* ColumnName(int field) {
     67   DCHECK(field < BEGIN_TEMPS);
     68   return g_metas_columns[field].name;
     69 }
     70 
     71 }  // namespace syncable
     72 
     73 #endif  // CHROME_BROWSER_SYNC_SYNCABLE_SYNCABLE_COLUMNS_H_
     74