3434]
3535preload_process_status_types = ["running" , "completed" , "failed" ]
3636preload_process_types = ["extract" , "load" ]
37- preload_system_keys = [{"key" : " version" , "value" : "0.2.0" }]
37+ preload_system_keys = [{"version" , "0.2.0" }]
3838
3939supported_data_stores = ["postgresql" , "mysql" , "oracle" , "mssql" , "snowflake" ]
4040
@@ -61,6 +61,31 @@ def __init__(self, config_location=None):
6161 self .data_store_port = data_store ["data_store_port" ]
6262 self .data_store_name = data_store ["data_store_name" ]
6363
64+ def delete_data_store (self ):
65+ """
66+ Initializes data store deletion, including wiping of all data within.
67+ :return:
68+ """
69+
70+ self .logger .warn ("ALERT - DATA STORE TO BE OVERWRITTEN - ALL DATA WILL BE LOST" )
71+
72+ for table in reversed (Base .metadata .sorted_tables ):
73+ try :
74+ self .logger .info ("Table will be deleted: %s" % table )
75+ table .drop (self .engine )
76+ except Exception :
77+ self .logger .error (
78+ "Table %s unable to be deleted. Does it exist?" % table
79+ )
80+
81+ def determine_versions (self ):
82+ """
83+ Find the data store version and the package version and return them.
84+ :return:
85+ """
86+
87+ self .session .query (System .system_value ).filter (System .system_key == "version" )
88+
6489 def get_or_create_item (self , model , create = True , ** kwargs ):
6590 """
6691 Testing if an entity instance exists or not. If does, return entity key. If not, create entity instance
@@ -110,63 +135,50 @@ def initialize_data_store(self, overwrite=False):
110135 :type overwrite: bool
111136 """
112137 self .logger .info ("Attempting to initialize Process Tracker data store." )
113- if overwrite :
114- self .logger .warn (
115- "ALERT - DATA STORE TO BE OVERWRITTEN - ALL DATA WILL BE LOST"
116- )
117-
118- for table in Base .metadata .table_names ():
119- self .logger .info ("Table will be deleted: %s" % table )
120- table .drop (self .engine )
121138
122- version = None
123- else :
124-
125- self .logger .debug ("Obtaining system version, if exists." )
126- version = (
127- self .session .query (System )
128- .filter (System .system_key == "version" )
129- .first ()
139+ if overwrite :
140+ self .delete_data_store ()
141+
142+ self .logger .info ("Data store initialization beginning. Creating data store." )
143+ for table in Base .metadata .sorted_tables :
144+ try :
145+ self .logger .info ("Table will be created: %s" % table )
146+ table .create (self .engine )
147+ except Exception :
148+ self .logger .error ("Object %s already exists?" % table )
149+
150+ self .logger .info ("Setting up application defaults." )
151+
152+ self .logger .info ("Adding error types..." )
153+ for error_type in preload_error_types :
154+ self .logger .info ("Adding %s" % error_type )
155+ self .get_or_create_item (model = ErrorType , error_type_name = error_type )
156+
157+ self .logger .info ("Adding extract status types..." )
158+ for extract_status_type in preload_extract_status_types :
159+ self .logger .info ("Adding %s" % extract_status_type )
160+ self .get_or_create_item (
161+ ExtractStatus , extract_status_name = extract_status_type
130162 )
131163
132- if version is None :
133-
134- self .logger .info (
135- "Data store initialization beginning. Creating data store."
164+ self .logger .info ("Adding process status types..." )
165+ for process_status_type in preload_process_status_types :
166+ self .logger .info ("Adding %s" % process_status_type )
167+ self .get_or_create_item (
168+ model = ProcessStatus , process_status_name = process_status_type
136169 )
137- Base .metadata .create_all (self .engine )
138-
139- self .logger .info ("Setting up application defaults." )
140-
141- self .logger .info ("Adding error types..." )
142- for error_type in preload_error_types :
143- self .logger .info ("Adding %s" % error_type )
144- self .session .add (ErrorType (error_type_name = error_type ))
145-
146- self .logger .info ("Adding extract status types..." )
147- for extract_status_type in preload_extract_status_types :
148- self .logger .info ("Adding %s" % extract_status_type )
149- self .session .add (ExtractStatus (extract_status_name = extract_status_type ))
150170
151- self .logger .info ("Adding process status types..." )
152- for process_status_type in preload_process_status_types :
153- self .logger .info ("Adding %s" % process_status_type )
154- self .session . add ( ProcessStatus ( process_status_name = process_status_type ) )
171+ self .logger .info ("Adding process types..." )
172+ for process_type in preload_process_types :
173+ self .logger .info ("Adding %s" % process_type )
174+ self .get_or_create_item ( model = ProcessType , process_type_name = process_type )
155175
156- self .logger .info ("Adding process types ..." )
157- for process_type in preload_process_types :
158- self .logger .info ("Adding %s" % process_type )
159- self .session . add ( ProcessType ( process_type_name = process_type ) )
176+ self .logger .info ("Adding system keys ..." )
177+ for key , value in preload_system_keys :
178+ self .logger .info ("Adding %s" % key )
179+ self .get_or_create_item ( model = System , system_key = key , system_value = value )
160180
161- self .logger .info ("Adding system keys..." )
162- for system_key , value in preload_system_keys :
163- self .logger .info ("Adding %s" % system_key )
164- self .session .add (System (system_key = system_key , system_value = value ))
165-
166- self .session .commit ()
167- else :
168- self .logger .error ("It appears the system has already been setup." )
169- ClickException ("It appears the system has already been setup." ).show ()
181+ self .session .commit ()
170182
171183 self .logger .debug ("Finished the initialization check." )
172184
0 commit comments