blob: 79a198bbc983b9e3e35a00133d7834821643cc56 [file] [log] [blame]
[email protected]e5ffd0e42009-09-11 21:30:561// 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 "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 nonexistant 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 nonexistant 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