blob: af4b9f890cc9c201a3c25db2c95cc288ddebedd4 [file] [log] [blame]
[email protected]f0a54b22011-07-19 18:40:211// Copyright (c) 2011 The Chromium Authors. All rights reserved.
[email protected]e5ffd0e42009-09-11 21:30:562// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
[email protected]f0a54b22011-07-19 18:40:215#include "sql/transaction.h"
[email protected]e5ffd0e42009-09-11 21:30:566
[email protected]e5ffd0e42009-09-11 21:30:567#include "base/logging.h"
[email protected]f0a54b22011-07-19 18:40:218#include "sql/connection.h"
[email protected]e5ffd0e42009-09-11 21:30:569
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() {
[email protected]4ab952f2014-04-01 20:18:1623 DCHECK(!is_open_) << "Beginning a transaction twice!";
[email protected]e5ffd0e42009-09-11 21:30:5624 is_open_ = connection_->BeginTransaction();
25 return is_open_;
26}
27
28void Transaction::Rollback() {
[email protected]4ab952f2014-04-01 20:18:1629 DCHECK(is_open_) << "Attempting to roll back a nonexistent transaction. "
30 << "Did you remember to call Begin() and check its return?";
[email protected]e5ffd0e42009-09-11 21:30:5631 is_open_ = false;
32 connection_->RollbackTransaction();
33}
34
35bool Transaction::Commit() {
[email protected]4ab952f2014-04-01 20:18:1636 DCHECK(is_open_) << "Attempting to commit a nonexistent transaction. "
37 << "Did you remember to call Begin() and check its return?";
[email protected]e5ffd0e42009-09-11 21:30:5638 is_open_ = false;
39 return connection_->CommitTransaction();
40}
41
42} // namespace sql