feat(db): add Postgres→SQLite fallback and Russian README

This commit is contained in:
2025-09-04 11:50:57 +03:00
parent c1a75f783a
commit 287cc916c4
2 changed files with 103 additions and 2 deletions

View File

@@ -14,7 +14,7 @@ else:
user=os.environ.get("POSTGRES_USER", "servey"),
password=os.environ.get("POSTGRES_PASSWORD", "utOgbZ09servey"),
host=os.environ.get("POSTGRES_HOST", "db"),
port=5432
port=int(os.environ.get("POSTGRES_PORT", 5432))
)
class BaseModel(Model):
@@ -89,7 +89,30 @@ class SurveyResult(BaseModel):
# Можно добавить поле для процента или JSON с ответами, если нужно
def initialize_db():
db.connect()
"""Инициализация БД с автоматическим фолбэком на SQLite.
Логика:
- Если установлен USE_SQLITE=1, используем SQLite.
- Иначе пытаемся подключиться к Postgres; при ошибке — переключаемся на SQLite.
"""
global db
try:
db.connect()
except Exception as exc:
# Если Postgres недоступен и режим SQLite не принудительный — делаем фолбэк
if not USE_SQLITE:
sqlite_db = SqliteDatabase(os.environ.get("SQLITE_PATH", "survey.db"))
# Перепривязываем модели к SQLite
sqlite_db.bind([
User, SurveyType, Product, Feature, Platform, PlatformFeature,
UserSurvey, SurveyInvite, SurveyResult
], bind_refs=False, bind_backrefs=False)
db = sqlite_db
db.connect()
else:
raise
db.create_tables([
User, SurveyType, Product, Feature, Platform, PlatformFeature,
UserSurvey, SurveyInvite, SurveyResult