Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(54)

Side by Side Diff: chrome/browser/meta_table_helper.cc

Issue 1700017: Get rid of MetaTableHelper class and make use of the app/sql API in the LoginDatabase. (Closed) Base URL: git://git.chromium.org/chromium.git
Patch Set: fix rebase that removed the chrome_tests.gypi Created 10 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « chrome/browser/meta_table_helper.h ('k') | chrome/browser/meta_table_helper_unittest.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
(Empty)
1 // Copyright (c) 2006-2008 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 #include "chrome/browser/meta_table_helper.h"
6
7 #include "base/logging.h"
8 #include "base/string_util.h"
9 #include "chrome/common/sqlite_utils.h"
10
11 // Key used in our meta table for version numbers.
12 static const char kVersionKey[] = "version";
13 static const char kCompatibleVersionKey[] = "last_compatible_version";
14
15 MetaTableHelper::MetaTableHelper() : db_(NULL) {
16 }
17
18 MetaTableHelper::~MetaTableHelper() {
19 }
20
21 bool MetaTableHelper::Init(const std::string& db_name,
22 int version,
23 int compatible_version,
24 sqlite3* db) {
25 DCHECK(!db_ && db);
26 db_ = db;
27 db_name_ = db_name;
28 if (!DoesSqliteTableExist(db_, db_name.c_str(), "meta")) {
29 // Build the sql.
30 std::string sql("CREATE TABLE ");
31 appendMetaTableName(db_name, &sql);
32 sql.append("(key LONGVARCHAR NOT NULL UNIQUE PRIMARY KEY,"
33 "value LONGVARCHAR)");
34
35 if (sqlite3_exec(db_, sql.c_str(), NULL, NULL, NULL) != SQLITE_OK)
36 return false;
37
38 // Note: there is no index over the meta table. We currently only have a
39 // couple of keys, so it doesn't matter. If we start storing more stuff in
40 // there, we should create an index.
41 SetVersionNumber(version);
42 SetCompatibleVersionNumber(compatible_version);
43 }
44 return true;
45 }
46
47 bool MetaTableHelper::SetValue(const std::string& key,
48 const std::wstring& value) {
49 SQLStatement s;
50 if (!PrepareSetStatement(&s, key))
51 return false;
52 s.bind_wstring(1, value);
53 return s.step() == SQLITE_DONE;
54 }
55
56 bool MetaTableHelper::GetValue(const std::string& key,
57 std::wstring* value) {
58 DCHECK(value);
59 SQLStatement s;
60 if (!PrepareGetStatement(&s, key))
61 return false;
62
63 s.column_wstring(0, value);
64 return true;
65 }
66
67 bool MetaTableHelper::SetValue(const std::string& key,
68 int value) {
69 SQLStatement s;
70 if (!PrepareSetStatement(&s, key))
71 return false;
72 s.bind_int(1, value);
73 return s.step() == SQLITE_DONE;
74 }
75
76 bool MetaTableHelper::GetValue(const std::string& key,
77 int* value) {
78 DCHECK(value);
79 SQLStatement s;
80 if (!PrepareGetStatement(&s, key))
81 return false;
82
83 *value = s.column_int(0);
84 return true;
85 }
86
87 bool MetaTableHelper::SetValue(const std::string& key,
88 int64 value) {
89 SQLStatement s;
90 if (!PrepareSetStatement(&s, key))
91 return false;
92 s.bind_int64(1, value);
93 return s.step() == SQLITE_DONE;
94 }
95
96 bool MetaTableHelper::GetValue(const std::string& key,
97 int64* value) {
98 DCHECK(value);
99 SQLStatement s;
100 if (!PrepareGetStatement(&s, key))
101 return false;
102
103 *value = s.column_int64(0);
104 return true;
105 }
106
107 void MetaTableHelper::SetVersionNumber(int version) {
108 SetValue(kVersionKey, version);
109 }
110
111 int MetaTableHelper::GetVersionNumber() {
112 int version = 0;
113 if (!GetValue(kVersionKey, &version))
114 return 0;
115 return version;
116 }
117
118 void MetaTableHelper::SetCompatibleVersionNumber(int version) {
119 SetValue(kCompatibleVersionKey, version);
120 }
121
122 int MetaTableHelper::GetCompatibleVersionNumber() {
123 int version = 0;
124 if (!GetValue(kCompatibleVersionKey, &version))
125 return 0;
126 return version;
127 }
128
129 // static
130 void MetaTableHelper::appendMetaTableName(const std::string& db_name,
131 std::string* sql) {
132 if (!db_name.empty()) {
133 sql->append(db_name);
134 sql->push_back('.');
135 }
136 sql->append("meta");
137 }
138
139 bool MetaTableHelper::PrepareSetStatement(SQLStatement* statement,
140 const std::string& key) {
141 DCHECK(db_ && statement);
142 std::string sql("INSERT OR REPLACE INTO ");
143 appendMetaTableName(db_name_, &sql);
144 sql.append("(key,value) VALUES(?,?)");
145 if (statement->prepare(db_, sql.c_str()) != SQLITE_OK) {
146 NOTREACHED() << sqlite3_errmsg(db_);
147 return false;
148 }
149 statement->bind_text(0, key.c_str());
150 return true;
151 }
152
153 bool MetaTableHelper::PrepareGetStatement(SQLStatement* statement,
154 const std::string& key) {
155 DCHECK(db_ && statement);
156 std::string sql("SELECT value FROM ");
157 appendMetaTableName(db_name_, &sql);
158 sql.append(" WHERE key = ?");
159 if (statement->prepare(db_, sql.c_str()) != SQLITE_OK) {
160 NOTREACHED() << sqlite3_errmsg(db_);
161 return false;
162 }
163 statement->bind_string(0, key);
164 if (statement->step() != SQLITE_ROW)
165 return false;
166 return true;
167 }
OLDNEW
« no previous file with comments | « chrome/browser/meta_table_helper.h ('k') | chrome/browser/meta_table_helper_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698