1// Copyright (c) 2010 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 "app/sql/transaction.h" 6 7#include "app/sql/connection.h" 8#include "base/logging.h" 9 10namespace sql { 11 12Transaction::Transaction(Connection* connection) 13 : connection_(connection), 14 is_open_(false) { 15} 16 17Transaction::~Transaction() { 18 if (is_open_) 19 connection_->RollbackTransaction(); 20} 21 22bool Transaction::Begin() { 23 if (is_open_) { 24 NOTREACHED() << "Beginning a transaction twice!"; 25 return false; 26 } 27 is_open_ = connection_->BeginTransaction(); 28 return is_open_; 29} 30 31void Transaction::Rollback() { 32 if (!is_open_) { 33 NOTREACHED() << "Attempting to roll back a nonexistent transaction. " 34 << "Did you remember to call Begin() and check its return?"; 35 return; 36 } 37 is_open_ = false; 38 connection_->RollbackTransaction(); 39} 40 41bool Transaction::Commit() { 42 if (!is_open_) { 43 NOTREACHED() << "Attempting to commit a nonexistent transaction. " 44 << "Did you remember to call Begin() and check its return?"; 45 return false; 46 } 47 is_open_ = false; 48 return connection_->CommitTransaction(); 49} 50 51} // namespace sql 52