blob: 9f49200f38c096818a18b247ac12f0938a640058 [file] [log] [blame]
// Copyright (c) 2012 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "webkit/database/quota_table.h"
#include "base/logging.h"
#include "base/utf_string_conversions.h"
#include "sql/statement.h"
namespace webkit_database {
bool QuotaTable::Init() {
// 'Quota' schema:
// origin The origin.
// quota The quota for this origin.
return db_->DoesTableExist("Quota") ||
db_->Execute(
"CREATE TABLE Quota ("
"origin TEXT NOT NULL PRIMARY KEY, "
"quota INTEGER NOT NULL)");
}
int64 QuotaTable::GetOriginQuota(const string16& origin_identifier) {
sql::Statement statement(db_->GetCachedStatement(
SQL_FROM_HERE, "SELECT quota FROM Quota WHERE origin = ?"));
statement.BindString16(0, origin_identifier);
if (statement.Step()) {
return statement.ColumnInt64(0);
}
return -1;
}
bool QuotaTable::SetOriginQuota(const string16& origin_identifier,
int64 quota) {
DCHECK(quota >= 0);
// Insert or update the quota for this origin.
sql::Statement replace_statement(db_->GetCachedStatement(
SQL_FROM_HERE, "REPLACE INTO Quota VALUES (?, ?)"));
replace_statement.BindString16(0, origin_identifier);
replace_statement.BindInt64(1, quota);
return replace_statement.Run();
}
bool QuotaTable::ClearOriginQuota(const string16& origin_identifier) {
sql::Statement statement(db_->GetCachedStatement(
SQL_FROM_HERE, "DELETE FROM Quota WHERE origin = ?"));
statement.BindString16(0, origin_identifier);
return (statement.Run() && db_->GetLastChangeCount());
}
} // namespace webkit_database