blob: 8b3bd9ee10a00e18cd1c077816338db6bd6b8294 [file] [log] [blame]
[email protected]c1c32c82012-03-15 09:35:421// Copyright (c) 2012 The Chromium Authors. All rights reserved.
[email protected]5852edc1b2009-09-10 06:05:272// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
[email protected]c1c32c82012-03-15 09:35:425#ifndef SYNC_SYNCABLE_SYNCABLE_COLUMNS_H_
6#define SYNC_SYNCABLE_SYNCABLE_COLUMNS_H_
[email protected]5852edc1b2009-09-10 06:05:277
[email protected]15732672012-06-20 18:58:268#include "sync/syncable/entry_kernel.h"
[email protected]c1c32c82012-03-15 09:35:429#include "sync/syncable/syncable_changes_version.h"
[email protected]5852edc1b2009-09-10 06:05:2710
[email protected]9cfc7c702012-07-02 22:54:1711namespace syncer {
[email protected]5852edc1b2009-09-10 06:05:2712namespace syncable {
13
14struct ColumnSpec {
15 const char* name;
16 const char* spec;
17};
18
[email protected]49c24fe82012-10-09 02:40:3519// Must be in exact same order as fields in entry_kernel.h.
[email protected]5852edc1b2009-09-10 06:05:2720static 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"},
[email protected]2fc32da2011-09-22 00:57:5126 // This is the item ID that we store for the embedding application.
27 {"local_external_id", "bigint default 0"},
[email protected]fc290d62012-11-10 05:20:1128 {"transaction_version", "bigint default 0"},
[email protected]2fc32da2011-09-22 00:57:5129 // These timestamps are kept in the same format as that of the
30 // protocol (ms since Unix epoch).
[email protected]5852edc1b2009-09-10 06:05:2731 {"mtime", "bigint default 0"},
32 {"server_mtime", "bigint default 0"},
33 {"ctime", "bigint default 0"},
34 {"server_ctime", "bigint default 0"},
[email protected]5852edc1b2009-09-10 06:05:2735 //////////////////////////////////////
36 // Ids
37 {"id", "varchar(255) default \"r\""},
38 {"parent_id", "varchar(255) default \"r\""},
39 {"server_parent_id", "varchar(255) default \"r\""},
[email protected]5852edc1b2009-09-10 06:05:2740 //////////////////////////////////////
41 // bits
42 {"is_unsynced", "bit default 0"},
43 {"is_unapplied_update", "bit default 0"},
44 {"is_del", "bit default 0"},
45 {"is_dir", "bit default 0"},
[email protected]5852edc1b2009-09-10 06:05:2746 {"server_is_dir", "bit default 0"},
47 {"server_is_del", "bit default 0"},
[email protected]5852edc1b2009-09-10 06:05:2748 //////////////////////////////////////
49 // Strings
[email protected]5852edc1b2009-09-10 06:05:2750 {"non_unique_name", "varchar"},
[email protected]3273dce2010-01-27 16:08:0851 {"server_non_unique_name", "varchar(255)"},
[email protected]7377db592010-02-09 22:00:0652 {"unique_server_tag", "varchar"},
53 {"unique_client_tag", "varchar"},
[email protected]457eaeb2013-04-02 04:08:2054 {"unique_bookmark_tag", "varchar"},
[email protected]5852edc1b2009-09-10 06:05:2755 //////////////////////////////////////
[email protected]49c24fe82012-10-09 02:40:3556 // Blobs (serialized protos).
[email protected]3273dce2010-01-27 16:08:0857 {"specifics", "blob"},
58 {"server_specifics", "blob"},
[email protected]49c24fe82012-10-09 02:40:3559 {"base_server_specifics", "blob"},
60 //////////////////////////////////////
[email protected]457eaeb2013-04-02 04:08:2061 // Blobs (positions).
62 {"server_unique_position", "blob"},
63 {"unique_position", "blob"},
[email protected]96c08a882014-04-02 03:40:2964 //////////////////////////////////////
65 // AttachmentMetadata is a proto that contains all the metadata associated
66 // with an entry's attachments. Each entry has only one AttachmentMetadata
67 // proto. We store a single proto per entry (as opposed to one for each
68 // attachment) because it simplifies the database schema and implementation of
69 // DirectoryBackingStore.
[email protected]b2e803e2014-07-16 05:25:5270 {"attachment_metadata", "blob"},
71 {"server_attachment_metadata", "blob"}
[email protected]5852edc1b2009-09-10 06:05:2772};
73
74// At least enforce that there are equal number of column names and fields.
mostynb21c4d642015-01-07 20:30:2775static_assert(arraysize(g_metas_columns) >= FIELD_COUNT, "missing column name");
76static_assert(arraysize(g_metas_columns) <= FIELD_COUNT, "extra column names");
[email protected]5852edc1b2009-09-10 06:05:2777
78static inline const char* ColumnName(int field) {
79 DCHECK(field < BEGIN_TEMPS);
80 return g_metas_columns[field].name;
81}
82
83} // namespace syncable
[email protected]9cfc7c702012-07-02 22:54:1784} // namespace syncer
[email protected]5852edc1b2009-09-10 06:05:2785
[email protected]c1c32c82012-03-15 09:35:4286#endif // SYNC_SYNCABLE_SYNCABLE_COLUMNS_H_