Skip to content

Commit 1ed0b9f

Browse files
committed
process_tracker_python-23 Data store initialization thru CLI
✨ CLI can now initialize data store (or drop and recreate) Found the issue to why drop_all and create_all were not working. Needed to include the schema for objects. Working on #23
1 parent 99ab7a8 commit 1ed0b9f

File tree

2 files changed

+33
-12
lines changed

2 files changed

+33
-12
lines changed

process_tracker/data_store.py

Lines changed: 21 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -61,6 +61,23 @@ 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+
6481
def get_or_create_item(self, model, create=True, **kwargs):
6582
"""
6683
Testing if an entity instance exists or not. If does, return entity key. If not, create entity instance
@@ -112,16 +129,12 @@ def initialize_data_store(self, overwrite=False):
112129
self.logger.info("Attempting to initialize Process Tracker data store.")
113130

114131
if overwrite:
115-
self.logger.warn(
116-
"ALERT - DATA STORE TO BE OVERWRITTEN - ALL DATA WILL BE LOST"
117-
)
118-
119-
for table in reversed(Base.metadata.sorted_tables):
120-
self.logger.info("Table will be deleted: %s" % table)
121-
table.drop(self.engine)
132+
self.delete_data_store()
122133

123134
self.logger.info("Data store initialization beginning. Creating data store.")
124-
Base.metadata.create_all(self.engine)
135+
for table in Base.metadata.sorted_tables:
136+
self.logger.info("Table will be created: %s" % table)
137+
table.create(self.engine)
125138

126139
self.logger.info("Setting up application defaults.")
127140

tests/test_cli.py

Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
import unittest
44

55
from click.testing import CliRunner
6+
import sqlalchemy
67

78
from process_tracker.cli import main
89
from process_tracker.data_store import DataStore
@@ -32,20 +33,27 @@ def setUp(self):
3233
self.session = self.data_store.session
3334
self.runner = CliRunner()
3435

36+
def test_setup_delete(self):
37+
"""
38+
Testing that data store is deleted if delete is triggered.
39+
:return:
40+
"""
41+
self.data_store.delete_data_store()
42+
table_names = sqlalchemy.inspect(self.data_store.engine).get_table_names()
43+
is_empty = table_names == []
44+
45+
self.assertTrue(True, is_empty)
46+
3547
def test_setup_overwrite(self):
3648
"""
3749
Testing that if data store is already set up and overwrite is set to True, wipe and recreate the data store.
3850
:return:
3951
"""
40-
self.data_store.get_or_create_item(model=Actor, actor_name="Testing Testor")
41-
pre_delete = self.session.query(Actor).count()
42-
time.sleep(1)
4352
self.runner.invoke(main, "setup -o True")
4453

4554
instance = self.session.query(Actor).count()
4655

4756
self.assertEqual(0, instance)
48-
self.assertNotEqual(0, pre_delete)
4957

5058
def test_setup_initialize(self):
5159
"""

0 commit comments

Comments
 (0)