mirror of
https://gitlab.com/MoonTestUse1/AdministrationItDepartmens.git
synced 2025-08-14 00:25:46 +02:00
Fix database
This commit is contained in:
@@ -9,7 +9,7 @@ class Settings(BaseSettings):
|
||||
# База данных
|
||||
POSTGRES_USER: str = "postgres"
|
||||
POSTGRES_PASSWORD: str = "postgres"
|
||||
POSTGRES_HOST: str = "postgres"
|
||||
POSTGRES_HOST: str = os.getenv("POSTGRES_HOST", "postgres")
|
||||
POSTGRES_PORT: str = "5432"
|
||||
POSTGRES_DB: str = "app"
|
||||
POSTGRES_TEST_DB: str = "test_app"
|
||||
@@ -40,9 +40,19 @@ class Settings(BaseSettings):
|
||||
|
||||
def get_database_url(self) -> str:
|
||||
"""Get database URL"""
|
||||
# Получаем URL из переменной окружения, если она есть
|
||||
if os.getenv("DATABASE_URL"):
|
||||
return os.getenv("DATABASE_URL")
|
||||
|
||||
# Иначе формируем URL на основе настроек
|
||||
if self.TESTING:
|
||||
return f"postgresql://{self.POSTGRES_USER}:{self.POSTGRES_PASSWORD}@localhost:5432/{self.POSTGRES_TEST_DB}"
|
||||
return f"postgresql://{self.POSTGRES_USER}:{self.POSTGRES_PASSWORD}@{self.POSTGRES_HOST}:{self.POSTGRES_PORT}/{self.POSTGRES_DB}"
|
||||
host = os.getenv("POSTGRES_HOST", "postgres")
|
||||
db = self.POSTGRES_TEST_DB
|
||||
else:
|
||||
host = self.POSTGRES_HOST
|
||||
db = self.POSTGRES_DB
|
||||
|
||||
return f"postgresql://{self.POSTGRES_USER}:{self.POSTGRES_PASSWORD}@{host}:{self.POSTGRES_PORT}/{db}"
|
||||
|
||||
def get_redis_url(self) -> str:
|
||||
"""Get Redis URL"""
|
||||
|
@@ -1,22 +1,16 @@
|
||||
"""Database configuration"""
|
||||
import os
|
||||
from sqlalchemy import create_engine
|
||||
from sqlalchemy.ext.declarative import declarative_base
|
||||
from sqlalchemy.orm import sessionmaker
|
||||
from sqlalchemy.orm import sessionmaker, declarative_base
|
||||
|
||||
# Определяем URL базы данных в зависимости от окружения
|
||||
if os.getenv("TESTING"):
|
||||
SQLALCHEMY_DATABASE_URL = "sqlite:///:memory:"
|
||||
engine = create_engine(
|
||||
SQLALCHEMY_DATABASE_URL,
|
||||
connect_args={"check_same_thread": False}
|
||||
)
|
||||
else:
|
||||
SQLALCHEMY_DATABASE_URL = "postgresql://postgres:postgres@postgres:5432/app"
|
||||
engine = create_engine(SQLALCHEMY_DATABASE_URL)
|
||||
from .core.config import settings
|
||||
|
||||
# Создаем движок базы данных
|
||||
engine = create_engine(settings.get_database_url())
|
||||
|
||||
# Создаем фабрику сессий
|
||||
SessionLocal = sessionmaker(autocommit=False, autoflush=False, bind=engine)
|
||||
|
||||
# Создаем базовый класс для моделей
|
||||
Base = declarative_base()
|
||||
|
||||
def get_db():
|
||||
|
@@ -16,7 +16,8 @@ from app.dependencies import get_db
|
||||
from .test_fixtures import * # импортируем все фикстуры
|
||||
|
||||
# Создаем тестовый движок базы данных
|
||||
engine = create_engine(test_settings.get_database_url())
|
||||
DATABASE_URL = os.getenv("DATABASE_URL", test_settings.get_database_url())
|
||||
engine = create_engine(DATABASE_URL)
|
||||
|
||||
# Создаем тестовую фабрику сессий
|
||||
TestingSessionLocal = sessionmaker(autocommit=False, autoflush=False, bind=engine)
|
||||
@@ -26,7 +27,8 @@ def setup_test_db() -> Generator[None, Any, None]:
|
||||
"""Setup test database"""
|
||||
try:
|
||||
# Создаем все таблицы
|
||||
Base.metadata.create_all(bind=engine)
|
||||
Base.metadata.drop_all(bind=engine) # Сначала удаляем все таблицы
|
||||
Base.metadata.create_all(bind=engine) # Затем создаем заново
|
||||
yield
|
||||
finally:
|
||||
# Удаляем все таблицы
|
||||
|
Reference in New Issue
Block a user