feat(db): add Postgres→SQLite fallback and Russian README
This commit is contained in:
27
models.py
27
models.py
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user