Statement template and formatting parameters container. Allows keeping a reference to a statement without interpolating identifiers that might have to be adjusted if they're referencing a table or column that is removed
| 192 | |
| 193 | |
| 194 | class Statement(Reference): |
| 195 | """ |
| 196 | Statement template and formatting parameters container. |
| 197 | |
| 198 | Allows keeping a reference to a statement without interpolating identifiers |
| 199 | that might have to be adjusted if they're referencing a table or column |
| 200 | that is removed |
| 201 | """ |
| 202 | |
| 203 | def __init__(self, template, **parts): |
| 204 | self.template = template |
| 205 | self.parts = parts |
| 206 | |
| 207 | def references_table(self, table): |
| 208 | return any( |
| 209 | hasattr(part, "references_table") and part.references_table(table) |
| 210 | for part in self.parts.values() |
| 211 | ) |
| 212 | |
| 213 | def references_column(self, table, column): |
| 214 | return any( |
| 215 | hasattr(part, "references_column") and part.references_column(table, column) |
| 216 | for part in self.parts.values() |
| 217 | ) |
| 218 | |
| 219 | def references_index(self, table, index): |
| 220 | return any( |
| 221 | hasattr(part, "references_index") and part.references_index(table, index) |
| 222 | for part in self.parts.values() |
| 223 | ) |
| 224 | |
| 225 | def rename_table_references(self, old_table, new_table): |
| 226 | for part in self.parts.values(): |
| 227 | if hasattr(part, "rename_table_references"): |
| 228 | part.rename_table_references(old_table, new_table) |
| 229 | |
| 230 | def rename_column_references(self, table, old_column, new_column): |
| 231 | for part in self.parts.values(): |
| 232 | if hasattr(part, "rename_column_references"): |
| 233 | part.rename_column_references(table, old_column, new_column) |
| 234 | |
| 235 | def __str__(self): |
| 236 | return self.template % self.parts |
| 237 | |
| 238 | |
| 239 | class Expressions(TableColumns): |
no outgoing calls