Fix: Rename directory to remove & character causing shell issues

Renamed ebook_backend&admin_panel to ebook_backend_admin_panel
  The & character was being interpreted by shell as background
  process operator, causing 'Dockerfile not found' errors in Coolify.
This commit is contained in:
richardtekula
2025-11-11 17:06:39 +01:00
parent a3b609eab7
commit f78c2199e1
35 changed files with 2 additions and 1 deletions

View File

@@ -0,0 +1,134 @@
"""
Test Database Management Script
This script helps create and manage the test database for unit tests.
"""
import psycopg2
from psycopg2.extensions import ISOLATION_LEVEL_AUTOCOMMIT
import sys
# Test database configuration
TEST_DB_NAME = "test_ebook_db"
import os
from dotenv import load_dotenv
load_dotenv()
TEST_DB_URL = os.getenv("TEST_DATABASE_URL", "postgresql://postgres:postgres@localhost:5432/test_ebook_db")
def create_test_database():
"""Create test database if it doesn't exist"""
try:
# Connect to default postgres database to create test database
conn = psycopg2.connect(
host="localhost",
port="5432",
user="postgres",
password="postgres",
database="postgres"
)
conn.set_isolation_level(ISOLATION_LEVEL_AUTOCOMMIT)
cursor = conn.cursor()
# Check if test database exists
cursor.execute("SELECT 1 FROM pg_database WHERE datname = %s", (TEST_DB_NAME,))
exists = cursor.fetchone()
if not exists:
cursor.execute(f"CREATE DATABASE {TEST_DB_NAME}")
print(f"✅ Created test database: {TEST_DB_NAME}")
else:
print(f" Test database {TEST_DB_NAME} already exists")
cursor.close()
conn.close()
return True
except Exception as e:
print(f"❌ Error creating test database: {e}")
return False
def drop_test_database():
"""Drop test database"""
try:
# Connect to default postgres database to drop test database
conn = psycopg2.connect(
host="localhost",
port="5432",
user="postgres",
password="postgres",
database="postgres"
)
conn.set_isolation_level(ISOLATION_LEVEL_AUTOCOMMIT)
cursor = conn.cursor()
# Terminate all connections to test database
cursor.execute(f"""
SELECT pg_terminate_backend(pid)
FROM pg_stat_activity
WHERE datname = '{TEST_DB_NAME}' AND pid <> pg_backend_pid()
""")
cursor.execute(f"DROP DATABASE IF EXISTS {TEST_DB_NAME}")
print(f"🗑️ Dropped test database: {TEST_DB_NAME}")
cursor.close()
conn.close()
return True
except Exception as e:
print(f"❌ Error dropping test database: {e}")
return False
def check_test_database():
"""Check if test database exists"""
try:
conn = psycopg2.connect(
host="localhost",
port="5432",
user="postgres",
password="postgres",
database="postgres"
)
cursor = conn.cursor()
cursor.execute("SELECT 1 FROM pg_database WHERE datname = %s", (TEST_DB_NAME,))
exists = cursor.fetchone()
cursor.close()
conn.close()
if exists:
print(f"✅ Test database {TEST_DB_NAME} exists")
return True
else:
print(f"❌ Test database {TEST_DB_NAME} does not exist")
return False
except Exception as e:
print(f"❌ Error checking test database: {e}")
return False
def main():
"""Main function to handle command line arguments"""
if len(sys.argv) < 2:
print("Usage: python manage_test_db.py [create|drop|check]")
print(" create - Create test database")
print(" drop - Drop test database")
print(" check - Check if test database exists")
return
command = sys.argv[1].lower()
if command == "create":
create_test_database()
elif command == "drop":
drop_test_database()
elif command == "check":
check_test_database()
else:
print(f"Unknown command: {command}")
print("Available commands: create, drop, check")
if __name__ == "__main__":
main()