OLD | NEW |
| (Empty) |
1 // Copyright (c) 2011 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 {"server_position_in_parent", "bigint default 0"}, | |
27 // This is the item ID that we store for the embedding application. | |
28 {"local_external_id", "bigint default 0"}, | |
29 // These timestamps are kept in the same format as that of the | |
30 // protocol (ms since Unix epoch). | |
31 {"mtime", "bigint default 0"}, | |
32 {"server_mtime", "bigint default 0"}, | |
33 {"ctime", "bigint default 0"}, | |
34 {"server_ctime", "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 {"base_server_specifics", "blob"} | |
61 }; | |
62 | |
63 // At least enforce that there are equal number of column names and fields. | |
64 COMPILE_ASSERT(arraysize(g_metas_columns) >= FIELD_COUNT, missing_column_name); | |
65 COMPILE_ASSERT(arraysize(g_metas_columns) <= FIELD_COUNT, extra_column_names); | |
66 | |
67 static inline const char* ColumnName(int field) { | |
68 DCHECK(field < BEGIN_TEMPS); | |
69 return g_metas_columns[field].name; | |
70 } | |
71 | |
72 } // namespace syncable | |
73 | |
74 #endif // CHROME_BROWSER_SYNC_SYNCABLE_SYNCABLE_COLUMNS_H_ | |
OLD | NEW |