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

Side by Side Diff: webkit/database/databases_table.cc

Issue 334039: Adding Chromium's database tracker. (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: Final version? Created 11 years, 1 month 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 | Annotate | Revision Log
« no previous file with comments | « webkit/database/databases_table.h ('k') | webkit/database/databases_table_unittest.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Property Changes:
Added: svn:eol-style
+ LF
OLDNEW
(Empty)
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 #include "webkit/database/databases_table.h"
6
7 #include "app/sql/connection.h"
8 #include "app/sql/statement.h"
9 #include "base/string_util.h"
10
11 namespace webkit_database {
12
13 bool DatabasesTable::Init() {
14 // 'Databases' schema:
15 // id A unique ID assigned to each database
16 // origin The originto which the database belongs. This is a
17 // string that can be used as part of a file name
18 // (http_webkit.org_0, for example).
19 // name The database name.
20 // description A short description of the database.
21 // estimated_size The estimated size of the database.
22 return db_->DoesTableExist("Databases") ||
23 (db_->Execute(
24 "CREATE TABLE Databases ("
25 "id INTEGER PRIMARY KEY AUTOINCREMENT, "
26 "origin TEXT NOT NULL, "
27 "name TEXT NOT NULL, "
28 "description TEXT NOT NULL, "
29 "estimated_size INTEGER NOT NULL)") &&
30 db_->Execute(
31 "CREATE INDEX origin_index ON Databases (origin)") &&
32 db_->Execute(
33 "CREATE UNIQUE INDEX unique_index ON Databases (origin, name)"));
34 }
35
36 bool DatabasesTable::GetDatabaseDetails(const string16& origin_identifier,
37 const string16& database_name,
38 DatabaseDetails* details) {
39 DCHECK(details);
40 sql::Statement select_statement(db_->GetCachedStatement(
41 SQL_FROM_HERE, "SELECT description, estimated_size FROM Databases "
42 "WHERE origin = ? AND name = ?"));
43 if (select_statement.is_valid() &&
44 select_statement.BindString(0, UTF16ToUTF8(origin_identifier)) &&
45 select_statement.BindString(1, UTF16ToUTF8(database_name)) &&
46 select_statement.Step()) {
47 details->origin_identifier = origin_identifier;
48 details->database_name = database_name;
49 details->description = UTF8ToUTF16(select_statement.ColumnString(0));
50 details->estimated_size = select_statement.ColumnInt64(1);
51 return true;
52 }
53
54 return false;
55 }
56
57 bool DatabasesTable::InsertDatabaseDetails(const DatabaseDetails& details) {
58 sql::Statement insert_statement(db_->GetCachedStatement(
59 SQL_FROM_HERE, "INSERT INTO Databases (origin, name, description, "
60 "estimated_size) VALUES (?, ?, ?, ?)"));
61 if (insert_statement.is_valid() &&
62 insert_statement.BindString(0, UTF16ToUTF8(details.origin_identifier)) &&
63 insert_statement.BindString(1, UTF16ToUTF8(details.database_name)) &&
64 insert_statement.BindString(2, UTF16ToUTF8(details.description)) &&
65 insert_statement.BindInt64(3, details.estimated_size)) {
66 return insert_statement.Run();
67 }
68
69 return false;
70 }
71
72 bool DatabasesTable::UpdateDatabaseDetails(const DatabaseDetails& details) {
73 sql::Statement update_statement(db_->GetCachedStatement(
74 SQL_FROM_HERE, "UPDATE Databases SET description = ?, "
75 "estimated_size = ? WHERE origin = ? AND name = ?"));
76 if (update_statement.is_valid() &&
77 update_statement.BindString(0, UTF16ToUTF8(details.description)) &&
78 update_statement.BindInt64(1, details.estimated_size) &&
79 update_statement.BindString(2, UTF16ToUTF8(details.origin_identifier)) &&
80 update_statement.BindString(3, UTF16ToUTF8(details.database_name))) {
81 return (update_statement.Run() && db_->GetLastChangeCount());
82 }
83
84 return false;
85 }
86
87 bool DatabasesTable::DeleteDatabaseDetails(const string16& origin_identifier,
88 const string16& database_name) {
89 sql::Statement delete_statement(db_->GetCachedStatement(
90 SQL_FROM_HERE, "DELETE FROM Databases WHERE origin = ? AND name = ?"));
91 if (delete_statement.is_valid() &&
92 delete_statement.BindString(0, UTF16ToUTF8(origin_identifier)) &&
93 delete_statement.BindString(1, UTF16ToUTF8(database_name))) {
94 return (delete_statement.Run() && db_->GetLastChangeCount());
95 }
96
97 return false;
98 }
99
100 bool DatabasesTable::GetAllDatabaseDetailsForOrigin(
101 const string16& origin_identifier,
102 std::vector<DatabaseDetails>* details_vector) {
103 sql::Statement statement(db_->GetCachedStatement(
104 SQL_FROM_HERE, "SELECT name, description, estimated_size "
105 "FROM Databases WHERE origin = ? ORDER BY origin, name"));
106 if (statement.is_valid() &&
107 statement.BindString(0, UTF16ToUTF8(origin_identifier))) {
108 while (statement.Step()) {
109 DatabaseDetails details;
110 details.origin_identifier = origin_identifier;
111 details.database_name = UTF8ToUTF16(statement.ColumnString(0));
112 details.description = UTF8ToUTF16(statement.ColumnString(1));
113 details.estimated_size = statement.ColumnInt64(2);
114 details_vector->push_back(details);
115 }
116 return statement.Succeeded();
117 }
118
119 return false;
120 }
121
122 } // namespace webkit_database
OLDNEW
« no previous file with comments | « webkit/database/databases_table.h ('k') | webkit/database/databases_table_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698