HDK
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
UT_ORMOperation.h
Go to the documentation of this file.
1 /*
2  * PROPRIETARY INFORMATION. This software is proprietary to
3  * Side Effects Software Inc., and is not to be reproduced,
4  * transmitted, or disclosed in any way without written permission.
5  *
6  * NAME: UT_ORMOperation.h
7  *
8  * COMMENTS:
9  *
10  *
11  */
12 
13 #ifndef __UT_ORMOPERATION_H__
14 #define __UT_ORMOPERATION_H__
15 
16 #include "UT_API.h"
17 
18 #include "UT_Array.h"
19 #include "UT_ErrorCode.h"
20 #include "UT_ORMColumn.h"
21 #include "UT_StringHolder.h"
22 #include "UT_UniquePtr.h"
23 #include "UT_ORMConstraint.h"
24 #include "UT_ORMModelState.h"
25 
26 class UT_WorkBuffer;
27 class UT_JSONValue;
28 class UT_ORMMigrationChangeNotifier;
31 
33 {
34 public:
35  virtual ~UT_IORMOperation() = default;
36  UT_IORMOperation(const UT_IORMOperation&) = default;
37  UT_IORMOperation& operator=(const UT_IORMOperation&) = default;
38 
39  virtual const UT_StringHolder& name() const = 0;
40  virtual void databaseForwards(
41  UT_IORMSchemaEditor& editor,
42  const UT_ORMMigrationState& from_state,
43  const UT_ORMMigrationState& to_state,
44  UT_ErrorCode& ec)
45  = 0;
46  virtual void stateForwards(UT_ORMMigrationState& state, UT_ErrorCode& ec) = 0;
47 
48 protected:
49  UT_IORMOperation() = default;
50 
51 private:
52 };
53 
55 {
56 public:
57  UT_ORMCreateTableOperation() = default;
58  explicit UT_ORMCreateTableOperation(const UT_StringHolder& table_name)
59  {
60  setTableName(table_name);
61  }
62 
63  const UT_StringHolder& name() const override;
64  void databaseForwards(
65  UT_IORMSchemaEditor& editor,
66  const UT_ORMMigrationState& from_state,
67  const UT_ORMMigrationState& to_state,
68  UT_ErrorCode& ec) override;
70 
72  {
73  myTableName = table_name;
74  return *this;
75  }
77  {
78  myFields.emplace_back(std::move(field));
79  return *this;
80  }
82  const UT_StringHolder& name,
84  const UT_StringHolder& foreign_table,
85  const UT_StringHolder& foreign_col,
86  unsigned props = UT_ORMColumn::Properties::Empty,
87  UT_ORMColumn::OnDelete ondelete = UT_ORMColumn::OnDelete::Cascade)
88  {
89  UT_ORMModelStateField field(name, type, props);
90  // The migration columns dont need the type since we only care about the
91  // actual table names for this.
92  field.setAsForeignKey(
93  foreign_table, foreign_table, foreign_col, ondelete);
94  exint i = myFields.emplace_back(std::move(field));
95  return myFields[i];
96  }
98  const UT_StringHolder& name,
100  UT_ORMColumn::Properties props = UT_ORMColumn::Properties::Empty)
101  {
102  exint i = myFields.emplace_back(name, type, props);
103  return myFields[i];
104  }
106  const UT_StringHolder& name,
108  UT_ORMColumn::Properties props = UT_ORMColumn::Properties::Empty)
109  {
110  exint i = myFields.emplace_back(
111  name, type, props | UT_ORMColumn::Properties::AutoIncrement);
112  return myFields[i];
113  }
114 
115 private:
116  UT_StringHolder myTableName;
118 };
119 
121 {
122 public:
123  UT_ORMDropTableOperation() = default;
124  explicit UT_ORMDropTableOperation(const UT_StringHolder& model_name)
125  {
126  setModelName(model_name);
127  }
128 
129  void setModelName(const UT_StringHolder& model_name)
130  {
131  myModelName = model_name;
132  }
133  const UT_StringHolder& name() const override;
134  void databaseForwards(
135  UT_IORMSchemaEditor& editor,
136  const UT_ORMMigrationState& from_state,
137  const UT_ORMMigrationState& to_state,
138  UT_ErrorCode& ec) override;
140 
141 private:
142  UT_StringHolder myModelName;
143 };
144 
146 {
147 public:
148  UT_ORMRenameModelOperation() = default;
150  const UT_StringHolder& old_model,
151  const UT_StringHolder& new_model)
152  : myOldModelName(old_model), myNewModelName(new_model)
153  {
154  }
155 
156  void setModel(
157  const UT_StringHolder& old_model,
158  const UT_StringHolder& new_model)
159  {
160  myOldModelName = old_model;
161  myNewModelName = new_model;
162  }
163 
164  void databaseForwards(
165  UT_IORMSchemaEditor& editor,
166  const UT_ORMMigrationState& from_state,
167  const UT_ORMMigrationState& to_state,
168  UT_ErrorCode& ec) override;
170 
171  const UT_StringHolder& oldModelName() const { return myOldModelName; }
172  const UT_StringHolder& newModelName() const { return myNewModelName; }
173 private:
174  UT_StringHolder myOldModelName;
175  UT_StringHolder myNewModelName;
176 };
177 
179 {
180 public:
181  UT_ORMAddFieldOperation() = default;
183  const UT_StringHolder& model_name,
184  UT_ORMModelStateField&& field)
185  {
186  setField(model_name, std::move(field));
187  }
188 
189  void setField(
190  const UT_StringHolder& model_name,
191  UT_ORMModelStateField&& field)
192  {
193  myModelName = model_name;
194  myField = std::move(field);
195  }
196  const UT_StringHolder& name() const override;
197  void databaseForwards(
198  UT_IORMSchemaEditor& editor,
199  const UT_ORMMigrationState& from_state,
200  const UT_ORMMigrationState& to_state,
201  UT_ErrorCode& ec) override;
203  override;
204 
205 private:
206  UT_StringHolder myModelName;
207  UT_ORMModelStateField myField;
208 };
209 
211 {
212 public:
213  UT_ORMRemoveFieldOperation() = default;
215  const UT_StringHolder& model_name,
216  const UT_StringHolder& field_name)
217  {
218  setField(model_name, field_name);
219  }
220 
221  void setField(
222  const UT_StringHolder& model_name,
223  const UT_StringHolder& field_name)
224  {
225  myModelName = model_name;
226  myFieldName = field_name;
227  }
228  const UT_StringHolder& name() const override;
229  void databaseForwards(
230  UT_IORMSchemaEditor& editor,
231  const UT_ORMMigrationState& from_state,
232  const UT_ORMMigrationState& to_state,
233  UT_ErrorCode& ec) override;
235 
236 private:
237  UT_StringHolder myModelName;
238  UT_StringHolder myFieldName;
239 };
240 
242 {
243 public:
244  UT_ORMRenameFieldOperation() = default;
246  const UT_StringHolder& model_name,
247  const UT_StringHolder& from_name,
248  const UT_StringHolder& to_name)
249  {
250  setField(model_name, from_name, to_name);
251  }
252 
253  void setField(
254  const UT_StringHolder& model_name,
255  const UT_StringHolder& from_name,
256  const UT_StringHolder& to_name)
257  {
258  myModelName = model_name;
259  myFromName = from_name;
260  myToName = to_name;
261  }
262  const UT_StringHolder& name() const override;
263  void databaseForwards(
264  UT_IORMSchemaEditor& editor,
265  const UT_ORMMigrationState& from_state,
266  const UT_ORMMigrationState& to_state,
267  UT_ErrorCode& ec) override;
269 
270 private:
271  UT_StringHolder myModelName;
272  UT_StringHolder myFromName;
273  UT_StringHolder myToName;
274 };
275 
277 {
278 public:
279  UT_ORMAddConstraintOperation() = default;
281  const UT_StringHolder& model_name,
282  UT_UniquePtr<UT_IORMConstraint>&& constraint)
283  {
284  setConstraint(model_name, std::move(constraint));
285  }
286 
288  const UT_StringHolder& model_name,
290  {
291  myModelName = model_name;
292  myConstraint = std::move(constraint);
293  }
294  const UT_StringHolder& name() const override;
295  void databaseForwards(
296  UT_IORMSchemaEditor& editor,
297  const UT_ORMMigrationState& from_state,
298  const UT_ORMMigrationState& to_state,
299  UT_ErrorCode& ec) override;
301 
302 private:
303  UT_StringHolder myModelName;
304  UT_UniquePtr<UT_IORMConstraint> myConstraint;
305 };
306 
307 #endif // __UT_ORMOPERATION_H__
const UT_StringHolder & oldModelName() const
void setField(const UT_StringHolder &model_name, const UT_StringHolder &from_name, const UT_StringHolder &to_name)
UT_ORMColumnType
UT_ORMAddFieldOperation(const UT_StringHolder &model_name, UT_ORMModelStateField &&field)
const UT_StringHolder & newModelName() const
int64 exint
Definition: SYS_Types.h:125
void setAsForeignKey(const UT_StringHolder &foreign_model, const UT_StringHolder &table_name, const UT_StringHolder &col, UT_ORMColumn::OnDelete ondelete=UT_ORMColumn::OnDelete::Cascade, const UT_StringHolder &related_name=UT_StringHolder::theEmptyString)
Definition: UT_ORMColumn.h:135
#define UT_API
Definition: UT_API.h:14
void setField(const UT_StringHolder &model_name, const UT_StringHolder &field_name)
void setField(const UT_StringHolder &model_name, UT_ORMModelStateField &&field)
virtual void databaseForwards(UT_IORMSchemaEditor &editor, const UT_ORMMigrationState &from_state, const UT_ORMMigrationState &to_state, UT_ErrorCode &ec)=0
virtual void stateForwards(UT_ORMMigrationState &state, UT_ErrorCode &ec)=0
void setModel(const UT_StringHolder &old_model, const UT_StringHolder &new_model)
std::unique_ptr< T, Deleter > UT_UniquePtr
A smart pointer for unique ownership of dynamically allocated objects.
Definition: UT_UniquePtr.h:39
GLint GLint GLsizei GLint GLenum GLenum type
Definition: glcorearb.h:108
UT_ORMRemoveFieldOperation(const UT_StringHolder &model_name, const UT_StringHolder &field_name)
UT_ORMCreateTableOperation & addField(UT_ORMModelStateField &&field)
UT_ORMColumn & addField(const UT_StringHolder &name, UT_ORMColumn::Type type, UT_ORMColumn::Properties props=UT_ORMColumn::Properties::Empty)
UT_ORMCreateTableOperation & setTableName(const UT_StringHolder &table_name)
UT_ORMColumn & addAutoField(const UT_StringHolder &name, UT_ORMColumn::Type type, UT_ORMColumn::Properties props=UT_ORMColumn::Properties::Empty)
GLuint const GLchar * name
Definition: glcorearb.h:786
std::error_code UT_ErrorCode
Definition: UT_ErrorCode.h:20
virtual const UT_StringHolder & name() const =0
LeafData & operator=(const LeafData &)=delete
UT_ORMDropTableOperation(const UT_StringHolder &model_name)
UT_ORMCreateTableOperation(const UT_StringHolder &table_name)
void setConstraint(const UT_StringHolder &model_name, UT_UniquePtr< UT_IORMConstraint > constraint)
Class to store JSON objects as C++ objects.
Definition: UT_JSONValue.h:99
UT_ORMRenameFieldOperation(const UT_StringHolder &model_name, const UT_StringHolder &from_name, const UT_StringHolder &to_name)
UT_ORMColumn & addForeignField(const UT_StringHolder &name, UT_ORMColumn::Type type, const UT_StringHolder &foreign_table, const UT_StringHolder &foreign_col, unsigned props=UT_ORMColumn::Properties::Empty, UT_ORMColumn::OnDelete ondelete=UT_ORMColumn::OnDelete::Cascade)
UT_ORMRenameModelOperation(const UT_StringHolder &old_model, const UT_StringHolder &new_model)
state
Definition: core.h:2289
void setModelName(const UT_StringHolder &model_name)
UT_ORMAddConstraintOperation(const UT_StringHolder &model_name, UT_UniquePtr< UT_IORMConstraint > &&constraint)
GLenum GLuint GLsizei const GLenum * props
Definition: glcorearb.h:2525