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