Mercurial > hg > orthanc-databases
comparison Framework/SQLite/SQLiteDatabase.cpp @ 215:b40b30075c51
added TransactionType_Implicit
author | Sebastien Jodogne <s.jodogne@gmail.com> |
---|---|
date | Fri, 26 Mar 2021 17:32:29 +0100 |
parents | 3236894320d6 |
children | 35598014f140 |
comparison
equal
deleted
inserted
replaced
214:ab96698c73a3 | 215:b40b30075c51 |
---|---|
46 | 46 |
47 namespace | 47 namespace |
48 { | 48 { |
49 class SQLiteImplicitTransaction : public ImplicitTransaction | 49 class SQLiteImplicitTransaction : public ImplicitTransaction |
50 { | 50 { |
51 private: | |
52 SQLiteDatabase& db_; | |
53 | |
54 protected: | 51 protected: |
55 virtual IResult* ExecuteInternal(IPrecompiledStatement& statement, | 52 virtual IResult* ExecuteInternal(IPrecompiledStatement& statement, |
56 const Dictionary& parameters) ORTHANC_OVERRIDE | 53 const Dictionary& parameters) ORTHANC_OVERRIDE |
57 { | 54 { |
58 return dynamic_cast<SQLiteStatement&>(statement).Execute(*this, parameters); | 55 return dynamic_cast<SQLiteStatement&>(statement).Execute(*this, parameters); |
61 virtual void ExecuteWithoutResultInternal(IPrecompiledStatement& statement, | 58 virtual void ExecuteWithoutResultInternal(IPrecompiledStatement& statement, |
62 const Dictionary& parameters) ORTHANC_OVERRIDE | 59 const Dictionary& parameters) ORTHANC_OVERRIDE |
63 { | 60 { |
64 dynamic_cast<SQLiteStatement&>(statement).ExecuteWithoutResult(*this, parameters); | 61 dynamic_cast<SQLiteStatement&>(statement).ExecuteWithoutResult(*this, parameters); |
65 } | 62 } |
66 | |
67 public: | |
68 explicit SQLiteImplicitTransaction(SQLiteDatabase& db) : | |
69 db_(db) | |
70 { | |
71 } | |
72 }; | 63 }; |
73 } | 64 } |
74 | 65 |
75 ITransaction* SQLiteDatabase::CreateTransaction(bool isImplicit) | 66 ITransaction* SQLiteDatabase::CreateTransaction(TransactionType type) |
76 { | 67 { |
77 if (isImplicit) | 68 switch (type) |
78 { | 69 { |
79 return new SQLiteImplicitTransaction(*this); | 70 case TransactionType_Implicit: |
80 } | 71 return new SQLiteImplicitTransaction; |
81 else | 72 |
82 { | 73 case TransactionType_ReadOnly: |
83 return new SQLiteTransaction(*this); | 74 case TransactionType_ReadWrite: |
75 return new SQLiteTransaction(*this); | |
76 | |
77 default: | |
78 throw Orthanc::OrthancException(Orthanc::ErrorCode_ParameterOutOfRange); | |
84 } | 79 } |
85 } | 80 } |
86 } | 81 } |