commit 883c81b78654bc8c86a121e5cc1e706b2f591171 Author: nitowa Date: Thu Aug 18 09:42:48 2022 -0400 db setup and teardown suite diff --git a/__pycache__/settings.cpython-310.pyc b/__pycache__/settings.cpython-310.pyc new file mode 100644 index 0000000..f8260ba Binary files /dev/null and b/__pycache__/settings.cpython-310.pyc differ diff --git a/settings.py b/settings.py new file mode 100644 index 0000000..808b9e1 --- /dev/null +++ b/settings.py @@ -0,0 +1,6 @@ +cassandra_addresses = ['127.0.0.1'] +cassandra_port = 9042 +cassandra_keyspace = 'distributedunionfind' + +setup_db_dir = 'setup/db' +setup_tables_dir = setup_db_dir+"/tables" \ No newline at end of file diff --git a/setup.py b/setup.py new file mode 100644 index 0000000..a0b592a --- /dev/null +++ b/setup.py @@ -0,0 +1,24 @@ +from settings import cassandra_addresses, cassandra_port, setup_db_dir, setup_tables_dir +from cassandra.cluster import Cluster +import os + +print(" == DB SETUP SCRIPT == ") + +print(f"Attempting Cassandra connection @ {cassandra_addresses}:{cassandra_port}") +cluster = Cluster(cassandra_addresses, port=cassandra_port) +session = cluster.connect() +print(f"Connection OK") + +with open(f"{setup_db_dir}/keyspace/CREATE.sql") as keyspace_create: + session.execute(keyspace_create.read()) + +with open(f"{setup_db_dir}/keyspace/USE.sql") as keyspace_use: + session.execute(keyspace_use.read()) + +for folder_name in os.listdir(setup_tables_dir): + with open(f'{setup_tables_dir}/{folder_name}/CREATE.sql') as sql_create: + session.execute(sql_create.read()) + +session.execute("INSERT INTO transactions (tx_id,address,value,tx_hash,block_id,timestamp) VALUES(1697,'t1KmCvfPMgfQXeNosFqzAmvYdEoYfdnxnVA',15701,'18c23345908f5097456c5f0014411381fd9866790aa65b863aab24ee17453732',818,1477724947)") +res = session.execute('SELECT * FROM transactions') +print(res.one()) \ No newline at end of file diff --git a/setup/db/keyspace/CREATE.sql b/setup/db/keyspace/CREATE.sql new file mode 100644 index 0000000..4ec3085 --- /dev/null +++ b/setup/db/keyspace/CREATE.sql @@ -0,0 +1 @@ +CREATE KEYSPACE IF NOT EXISTS distributedunionfind WITH replication = {'class':'SimpleStrategy', 'replication_factor' : 3}; \ No newline at end of file diff --git a/setup/db/keyspace/DROP.sql b/setup/db/keyspace/DROP.sql new file mode 100644 index 0000000..19b4046 --- /dev/null +++ b/setup/db/keyspace/DROP.sql @@ -0,0 +1 @@ +DROP KEYSPACE IF EXISTS distributedunionfind \ No newline at end of file diff --git a/setup/db/keyspace/USE.sql b/setup/db/keyspace/USE.sql new file mode 100644 index 0000000..524daf2 --- /dev/null +++ b/setup/db/keyspace/USE.sql @@ -0,0 +1 @@ +USE distributedunionfind; \ No newline at end of file diff --git a/setup/db/tables/transactions/CREATE.sql b/setup/db/tables/transactions/CREATE.sql new file mode 100644 index 0000000..1e1e9a6 --- /dev/null +++ b/setup/db/tables/transactions/CREATE.sql @@ -0,0 +1,9 @@ +CREATE TABLE transactions( + tx_id INT, + address TEXT, + value INT, + tx_hash TEXT, + block_id INT, + timestamp TIMESTAMP, + PRIMARY KEY (tx_id, address) +) WITH CLUSTERING ORDER BY (address DESC); \ No newline at end of file diff --git a/setup/db/tables/transactions/DROP.sql b/setup/db/tables/transactions/DROP.sql new file mode 100644 index 0000000..bd4e7b7 --- /dev/null +++ b/setup/db/tables/transactions/DROP.sql @@ -0,0 +1 @@ +DROP TABLE transactions \ No newline at end of file diff --git a/teardown.py b/teardown.py new file mode 100644 index 0000000..6611424 --- /dev/null +++ b/teardown.py @@ -0,0 +1,21 @@ +from settings import cassandra_addresses, cassandra_port, cassandra_keyspace, setup_tables_dir, setup_db_dir +from cassandra.cluster import Cluster +import os + +print(" == DB TEARDOWN SCRIPT == ") + +print(f"Attempting Cassandra connection @ {cassandra_addresses}:{cassandra_port}") +cluster = Cluster(cassandra_addresses, port=cassandra_port) +session = cluster.connect(cassandra_keyspace) +print(f"Connection OK") + +for folder_name in os.listdir(setup_tables_dir): + print(f"Dropping table {folder_name}") + with open(f'{setup_tables_dir}/{folder_name}/DROP.sql') as sql_drop: + session.execute(sql_drop.read()) + +with open(f"{setup_db_dir}/keyspace/DROP.sql") as keyspace_create: + print(f"Dropping keyspace {cassandra_keyspace}") + session.execute(keyspace_create.read()) + +print("Done!")