@@ -29,262 +29,109 @@ def script_as_select(self, metadata) -> str:
2929
3030 # CREATE ##################################################################
3131
32- # Database
33-
34- def get_database_create_script (self , metadata ) -> str :
35- """ Get create script for databases """
32+ def get_create_script (self , metadata ) -> str :
33+ """ Get create script for all objects """
3634 try :
37- # get database from server
38- database_name = metadata ["name " ]
39- database = self .server . databases [ database_name ]
35+ # get object from server
36+ object_type = metadata ["metadataTypeName " ]
37+ obj = self ._get_object ( object_type , metadata )
4038
4139 # get the create script
42- script = database .create_script (self .connection )
43- return script
44- except Exception :
45- # need to handle exceptions well
46- return None
40+ script = obj .create_script (self .connection )
4741
48- # View
49-
50- def get_view_create_script (self , metadata ) -> str :
51- """ Get create script for views """
52- try :
53- # get view from server
54- view_name = metadata ["name" ]
55- parent_schema = self ._find_schema (metadata )
56- view = parent_schema .views [view_name ]
57-
58- # get the create script
59- script = view .create_script (self .connection )
6042 return script
6143 except Exception :
44+ # need to handle exceptions well
6245 return None
6346
64- # Table
65-
66- def get_table_create_script (self , metadata ) -> str :
67- """ Get create script for tables """
47+ # DELETE ##################################################################
48+ def get_delete_script (self , metadata ) -> str :
49+ """ Get delete script for all objects """
6850 try :
69- # get table from server
70- table = self ._find_table (metadata )
51+ # get object from server
52+ object_type = metadata ["metadataTypeName" ]
53+ obj = self ._get_object (object_type , metadata )
7154
7255 # get the create script
73- script = table . create_script (self .connection )
56+ script = obj . delete_script (self .connection )
7457 return script
7558 except Exception :
7659 return None
7760
78- # Tablespace
79-
80- def get_tablespace_create_script (self , metadata ) -> str :
81- try :
82- # get tablespace
83- tablespace_name = metadata ["name" ]
84- tablespace = self .server .tablespaces [tablespace_name ]
85-
86- # get create script
87- script = tablespace .create_script (self .connection )
88- return script
89- except Exception :
90- return None
91-
92- # Schema
61+ # UPDATE ##################################################################
9362
94- def get_schema_create_script (self , metadata ) -> str :
95- """ Get create script for schema """
63+ def get_table_update_script (self , metadata ) -> str :
64+ """ Get update script for tables """
9665 try :
97- # get schema from server
98- schema = self ._find_schema (metadata )
66+ # get object from server
67+ object_type = metadata ["metadataTypeName" ]
68+ obj = self ._get_object (object_type , metadata )
9969
10070 # get the create script
101- script = schema . create_script (self .connection )
71+ script = obj . update_script (self .connection )
10272 return script
10373 except Exception :
10474 return None
10575
106- def get_role_create_script (self , metadata ) -> str :
107- """ Get create script for role """
108- try :
109- # get roles from server
110- role_name = metadata ["name" ]
111- role = self .server .roles [role_name ]
112-
113- # get the create script
114- script = role .create_script (self .connection )
115- return script
116- except :
117- return None
118-
119- # DELETE ##################################################################
120-
121- # Table
76+ # HELPER METHODS ##########################################################
12277
123- def get_table_delete_script (self , metadata ) -> str :
124- """ Get delete script for table """
78+ def _find_schema (self , metadata ):
79+ """ Find the schema in the server to script as """
80+ table_schema = metadata ["schema" ]
81+ databases = self .server .databases
82+ parent_schema = None
12583 try :
126- table = self . _find_table ( metadata )
127- script = table . delete_script ( self . connection )
128- return script
84+ for db in databases :
85+ parent_schema = db . schemas [ table_schema ]
86+ return parent_schema
12987 except Exception :
13088 return None
13189
132- # View
133-
134- def get_view_delete_script (self , metadata ) -> str :
135- """ Get delete script for view """
90+ def _find_table (self , metadata ):
91+ """ Find the table in the server to script as """
13692 try :
137- # get view from server
138- view_name = metadata ["name" ]
93+ table_name = metadata ["name" ]
13994 parent_schema = self ._find_schema (metadata )
140- view = parent_schema .views [view_name ]
141-
142- # get the delete script
143- script = view .delete_script (self .connection )
144- return script
95+ for table in parent_schema .tables :
96+ return parent_schema .tables [table_name ]
14597 except Exception :
14698 return None
14799
148- # Database
149-
150- def get_database_delete_script (self , metadata ) -> str :
151- """ Get delete script for databases """
100+ def _find_database (self , metadata ):
101+ """ Find a database in the server """
152102 try :
153- # get database from server
154103 database_name = metadata ["name" ]
155104 database = self .server .databases [database_name ]
156-
157- # get the delete script
158- script = database .delete_script (self .connection )
159- return script
105+ return database
160106 except Exception :
161107 return None
162108
163- # Schema
164-
165- def get_schema_delete_script (self , metadata ) -> str :
166- """ Get delete script for schemas """
109+ def _find_view (self , metadata ):
110+ """ Find a view in the server """
167111 try :
168- # get schema from server
169- schema = self ._find_schema (metadata )
170-
171- # get the delete script
172- script = schema .delete_script (self .connection )
173- return script
174- except Exception :
175- return None
176-
177- # Tablespace
178-
179- def get_tablespace_delete_script (self , metadata ) -> str :
180- """ Get delete script for tablespaces """
181- try :
182- # get tablespace from server
183- tablespace_name = metadata ["name" ]
184- tablespace = self .server .tablespaces [tablespace_name ]
185-
186- # get the delete script
187- script = tablespace .delete_script (self .connection )
188- return script
189- except Exception :
190- return None
191-
192- # UPDATE ##################################################################
193-
194- # Table
195-
196- def get_table_update_script (self , metadata ) -> str :
197- """ Get update script for tables """
198- try :
199- # get table from server
200- table = self ._find_table (metadata )
201-
202- # get the create script
203- script = table .update_script (self .connection )
204- return script
205- except Exception :
206- return None
207-
208- # View
209-
210- def get_view_update_script (self , metadata ) -> str :
211- """ Get update date script for view """
212- try :
213- # get view from server
214112 view_name = metadata ["name" ]
215113 parent_schema = self ._find_schema (metadata )
216114 view = parent_schema .views [view_name ]
217-
218- # get the create script
219- script = view .update_script (self .connection )
220- return script
221- except Exception :
222- return None
223-
224- # Schema
225-
226- def get_schema_update_script (self , metadata ) -> str :
227- """ Get update script for schemas """
228- try :
229- # get schema from server
230- schema = self ._find_schema (metadata )
231-
232- # get the delete script
233- script = schema .update_script (self .connection )
234- return script
115+ return view
235116 except Exception :
236117 return None
237118
238- # Role
239-
240- def get_role_update_script (self , metadata ) -> str :
241- """ Get update script for roles """
119+ def _find_role (self , metadata ):
120+ """ Find a role in the server """
242121 try :
243- # get roles from server
244122 role_name = metadata ["name" ]
245123 role = self .server .roles [role_name ]
246-
247- # get the create script
248- script = role .update_script (self .connection )
249- return script
250- except Exception :
251- return None
252-
253- # Tablespace
254-
255- def get_tablespace_update_script (self , metadata ) -> str :
256- """ Get update script for tablespaces """
257- try :
258- # get tablespace from server
259- tablespace_name = metadata ["name" ]
260- tablespace = self .server .tablespaces [tablespace_name ]
261-
262- # get the delete script
263- script = tablespace .update_script (self .connection )
264- return script
265- except Exception :
266- return None
267-
268- # HELPER METHODS ##########################################################
269-
270- def _find_schema (self , metadata ):
271- """ Find the schema in the server to script as """
272- table_schema = metadata ["schema" ]
273- databases = self .server .databases
274- parent_schema = None
275- try :
276- for db in databases :
277- parent_schema = db .schemas [table_schema ]
278- return parent_schema
124+ return role
279125 except Exception :
280126 return None
281127
282- def _find_table (self , metadata ):
283- """ Find the table in the server to script as """
284- try :
285- table_name = metadata ["name" ]
286- parent_schema = self ._find_schema (metadata )
287- for table in parent_schema .tables :
288- return parent_schema .tables [table_name ]
289- except Exception :
290- return None
128+ def _get_object (self , object_type : str , metadata ):
129+ """ Retrieve a given object """
130+ object_map = {
131+ "Table" : self ._find_table ,
132+ "Schema" : self ._find_schema ,
133+ "Database" : self ._find_database ,
134+ "View" : self ._find_view ,
135+ "Role" : self ._find_role
136+ }
137+ return object_map [object_type ](metadata )
0 commit comments