Add auto schema creation and deploy to macmini14
ci/woodpecker/push/woodpecker Pipeline was successful
Details
ci/woodpecker/push/woodpecker Pipeline was successful
Details
This commit is contained in:
parent
90501f0a1f
commit
5f920a7e37
|
@ -283,24 +283,50 @@ def update_transaction(id):
|
|||
|
||||
def bootstrap_database():
|
||||
"""
|
||||
Checks if the database is empty. Test data can be loaded separately using the tests/generate_test_data.py script.
|
||||
Checks if the database is empty and initializes the schema if needed.
|
||||
Test data can be loaded separately using the tests/generate_test_data.py script.
|
||||
"""
|
||||
logger.info(f"Ploughshares v{VERSION} - Checking database for existing data...")
|
||||
logger.info(f"Ploughshares v{VERSION} - Checking database...")
|
||||
conn = get_db_connection()
|
||||
if conn is None:
|
||||
logger.error("Database connection failed. Exiting.")
|
||||
exit(1)
|
||||
|
||||
try:
|
||||
# Check if the transactions table exists
|
||||
with conn.cursor() as cur:
|
||||
cur.execute("SELECT COUNT(*) FROM transactions")
|
||||
cur.execute("SELECT EXISTS (SELECT FROM information_schema.tables WHERE table_name = 'transactions')")
|
||||
result = cur.fetchone()
|
||||
if result and 'count' in result:
|
||||
count = result['count']
|
||||
if count == 0:
|
||||
logger.info(f"Ploughshares v{VERSION} - Database is empty. You can populate it with test data using the tests/generate_test_data.py script.")
|
||||
|
||||
# If table doesn't exist, initialize the schema
|
||||
if not result or not result.get('exists', False):
|
||||
logger.info(f"Ploughshares v{VERSION} - Transactions table not found. Initializing schema...")
|
||||
|
||||
# Read schema.sql file
|
||||
try:
|
||||
with open('schema.sql', 'r') as f:
|
||||
schema_sql = f.read()
|
||||
|
||||
# Execute schema SQL
|
||||
with conn.cursor() as schema_cur:
|
||||
schema_cur.execute(schema_sql)
|
||||
logger.info(f"Ploughshares v{VERSION} - Schema initialized successfully.")
|
||||
except Exception as schema_error:
|
||||
logger.error(f"Error initializing schema: {schema_error}")
|
||||
else:
|
||||
logger.error("Could not get count from database")
|
||||
# Check if the table is empty
|
||||
try:
|
||||
with conn.cursor() as cur:
|
||||
cur.execute("SELECT COUNT(*) FROM transactions")
|
||||
result = cur.fetchone()
|
||||
if result and 'count' in result:
|
||||
count = result['count']
|
||||
if count == 0:
|
||||
logger.info(f"Ploughshares v{VERSION} - Database is empty. You can populate it with test data using the tests/generate_test_data.py script.")
|
||||
else:
|
||||
logger.error("Could not get count from database")
|
||||
except Exception as count_error:
|
||||
logger.error(f"Error counting transactions: {count_error}")
|
||||
except Exception as e:
|
||||
logger.error(f"Error checking database: {e}")
|
||||
finally:
|
||||
|
|
|
@ -9,6 +9,9 @@ services:
|
|||
image: 'git.nixc.us/colin/ploughshares:latest'
|
||||
deploy:
|
||||
replicas: 1
|
||||
placement:
|
||||
constraints:
|
||||
- node.hostname == macmini14
|
||||
labels:
|
||||
homepage.group: tools
|
||||
homepage.name: Project Ploughshares
|
||||
|
@ -43,7 +46,7 @@ services:
|
|||
replicas: 1
|
||||
placement:
|
||||
constraints:
|
||||
- node.role == manager
|
||||
- node.hostname == macmini14
|
||||
environment:
|
||||
- POSTGRES_DB=ploughshares
|
||||
- POSTGRES_USER=ploughshares
|
||||
|
|
Loading…
Reference in New Issue