13 #ifndef __UT_ORMDDLREFERENCE_H__
14 #define __UT_ORMDDLREFERENCE_H__
32 myDDLTemplate(ddl_template)
42 ddl_references)
const;
48 const ddl_replace_func_t&
func,
97 return myTableName ==
table;
104 if (myTableName == old_table)
105 myTableName = new_table;
125 return myTableName == table && hasColumn_(column);
133 if (myTableName == table)
137 for (
int i = myColumns.size(); i-- > 0;)
139 if (myColumns[i] == old_column)
141 myColumns[i] = new_column;
157 for (
auto&& col : myColumns)
177 , myColumnSuffixes(column_suffixes)
185 for (
int i = 0,
s = myColumnSuffixes.size(); i <
s; i++)
189 wbuf.
append(myColumns[i]);
190 if (i < myColumnSuffixes.size())
191 wbuf.
append(myColumnSuffixes[i]);
215 , myToReference(to_table, to_columns)
216 , myCreateFKName(create_fk_name)
223 || myToReference.referencesTable(table);
232 || myToReference.referencesColumn(table, column);
240 old_table, new_table);
241 myToReference.renameTableReferences(old_table, new_table);
250 table, old_column, new_column);
251 myToReference.renameColumnReferences(table, old_column, new_column);
256 return myCreateFKName(myTableName, myColumns);
272 : myDDLTemplate(ddl_template), myReferences(std::move(refs))
275 myDDLTemplate(ddl_template)
282 for (
auto&& [key, part] : myReferences)
284 if (part->referencesTable(table))
294 for (
auto&& [key, part] : myReferences)
296 if (part->referencesColumn(table, column))
306 for (
auto&& [key, part] : myReferences)
308 part->renameTableReferences(old_table, new_table);
317 for (
auto&& [key, part] : myReferences)
319 part->renameColumnReferences(table, old_column, new_column);
325 return myDDLTemplate.generate(myReferences);
330 ddl_ref_map_t myReferences;
333 #endif // __UT_ORMDDLREFERENCE_H__
UT_StringArray myColumnSuffixes
void renameColumnReferences(const UT_StringHolder &table, const UT_StringHolder &old_column, const UT_StringHolder &new_column) override
void renameColumnReferences(const UT_StringHolder &table, const UT_StringHolder &old_column, const UT_StringHolder &new_column) override
create_fk_name_t myCreateFKName
UT_ORMDDLTableReference(const UT_StringHolder &table)
void renameTableReferences(const UT_StringHolder &old_table, const UT_StringHolder &new_table) override
void renameTableReferences(const UT_StringHolder &old_table, const UT_StringHolder &new_table) override
bool referencesColumn(const UT_StringHolder &table, const UT_StringHolder &column) const override
UT_ORMDDLStatement(const UT_ORMDDLTemplate &ddl_template)
bool referencesTable(const UT_StringHolder &table) const override
bool hasColumn_(const UT_StringRef &column) const
void renameColumnReferences(const UT_StringHolder &table, const UT_StringHolder &old_column, const UT_StringHolder &new_column) override
virtual ~UT_IORMDDLReference()=default
UT_ORMDDLStatement(const UT_ORMDDLTemplate &ddl_template, ddl_ref_map_t &&refs)
UT_ORMDDLColumnsReference(const UT_StringHolder &table, const UT_StringArray &columns, const UT_StringArray &column_suffixes=UT_StringArray{})
UT_StringHolder toString() const override
bool referencesColumn(const UT_StringHolder &table, const UT_StringHolder &column) const override
UT_IORMDDLReference()=default
std::unique_ptr< T, Deleter > UT_UniquePtr
A smart pointer for unique ownership of dynamically allocated objects.
A utility class to do read-only operations on a subset of an existing string.
virtual void renameTableReferences(const UT_StringHolder &old_table, const UT_StringHolder &new_table)
UT_ORMDDLBaseTableColumnsReference(const UT_StringHolder &table, const UT_StringArray &columns)
UT_ORMDDLColumnsReference myToReference
virtual void renameColumnReferences(const UT_StringHolder &table, const UT_StringHolder &old_column, const UT_StringHolder &new_column)
UT_StringHolder myTableName
#define UT_NON_COPYABLE(CLASS)
Define deleted copy constructor and assignment operator inside a class.
bool referencesTable(const UT_StringHolder &table) const override
UT_StringHolder generate(const UT_ArrayStringMap< UT_UniquePtr< UT_IORMDDLReference >> &ddl_references) const
bool referencesColumn(const UT_StringHolder &table, const UT_StringHolder &column) const override
std::function< T > UT_Function
virtual bool referencesColumn(const UT_StringHolder &table, const UT_StringHolder &column) const
GLenum GLenum GLsizei void * table
virtual UT_StringHolder toString() const =0
bool referencesTable(const UT_StringHolder &table) const override
UT_StringHolder toString() const override
UT_ORMDDLTemplate(const UT_StringHolder &ddl_template)
UT_StringHolder toString() const override
void renameTableReferences(const UT_StringHolder &old_table, const UT_StringHolder &new_table) override
SYS_FORCE_INLINE void append(char character)
UT_Function< UT_StringHolder(const UT_StringHolder &, const UT_StringArray &)> create_fk_name_t
UT_ORMForeignKeyNameReference(const UT_StringHolder &from_table, const UT_StringArray &from_columns, const UT_StringHolder &to_table, const UT_StringArray &to_columns, create_fk_name_t &&create_fk_name)
UT_IORMDDLReference & operator=(const UT_IORMDDLReference &)=default
void replace(const UT_StringView &key, const UT_StringHolder &string)
GLenum GLenum GLsizei void GLsizei void * column
UT_StringHolder toString() const override
virtual bool referencesTable(const UT_StringHolder &table) const