Corin1998 commited on
Commit
67b8c26
·
verified ·
1 Parent(s): e22b238

Update app/config.py

Browse files
Files changed (1) hide show
  1. app/config.py +24 -2
app/config.py CHANGED
@@ -1,14 +1,36 @@
1
  from pydantic import BaseModel
2
  import os
3
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
4
  class Settings(BaseModel):
5
  APP_ENV: str = os.getenv("APP_ENV", "dev")
6
  SECRET_KEY: str = os.getenv("SECRET_KEY", "change_me")
7
  ALLOWED_ORIGINS: str = os.getenv("ALLOWED_ORIGINS", "*")
8
  BASE_URL: str = os.getenv("BASE_URL", "http://localhost:7860")
9
 
10
- # Fallback to SQLite if DATABASE_URL not provided (lets Spaces boot)
11
- DATABASE_URL: str = os.getenv("DATABASE_URL", "sqlite+pysqlite:///./app.db")
12
 
13
  CELERY_BROKER_URL: str = os.getenv("CELERY_BROKER_URL", "")
14
  CELERY_RESULT_BACKEND: str = os.getenv("CELERY_RESULT_BACKEND", "")
 
1
  from pydantic import BaseModel
2
  import os
3
 
4
+ def _default_sqlite_url() -> str:
5
+ """
6
+ /data があれば最優先(HF Spacesの永続領域)
7
+ 次に /tmp(Cloud Run等の書込可領域)
8
+ 最後にカレント(ローカル)
9
+ """
10
+ candidates = ["/data/app.db", "/tmp/app.db", "./app.db"]
11
+ for path in candidates:
12
+ try:
13
+ dirpath = os.path.dirname(path) or "."
14
+ os.makedirs(dirpath, exist_ok=True)
15
+ # 書き込み可能か簡易チェック(touch → 削除)
16
+ probe = path + ".touch"
17
+ with open(probe, "w") as f:
18
+ f.write("ok")
19
+ os.remove(probe)
20
+ return f"sqlite+pysqlite:///{path}"
21
+ except Exception:
22
+ continue
23
+ # 最後の砦
24
+ return "sqlite+pysqlite:///./app.db"
25
+
26
  class Settings(BaseModel):
27
  APP_ENV: str = os.getenv("APP_ENV", "dev")
28
  SECRET_KEY: str = os.getenv("SECRET_KEY", "change_me")
29
  ALLOWED_ORIGINS: str = os.getenv("ALLOWED_ORIGINS", "*")
30
  BASE_URL: str = os.getenv("BASE_URL", "http://localhost:7860")
31
 
32
+ # 未設定なら書込み可能な場所を自動検出
33
+ DATABASE_URL: str = os.getenv("DATABASE_URL", _default_sqlite_url())
34
 
35
  CELERY_BROKER_URL: str = os.getenv("CELERY_BROKER_URL", "")
36
  CELERY_RESULT_BACKEND: str = os.getenv("CELERY_RESULT_BACKEND", "")