jeevzz commited on
Commit
987982d
·
verified ·
1 Parent(s): 32f27f1

Update database.py

Browse files
Files changed (1) hide show
  1. database.py +12 -8
database.py CHANGED
@@ -1,19 +1,17 @@
1
- from sqlalchemy import create_engine, Column, String, Integer, Text, DateTime, ForeignKey, Index
2
  from sqlalchemy.ext.declarative import declarative_base
3
  from sqlalchemy.orm import sessionmaker, relationship
4
  from datetime import datetime
5
  import uuid
6
  import os
7
 
8
- # For HF Spaces: Use environment variable directly (set via Secrets)
9
- # For local dev: Can still use .env file
10
- DATABASE_URL = os.getenv("DATABASE_URL")
11
-
12
- if not DATABASE_URL:
13
- raise ValueError("DATABASE_URL environment variable is not set!")
14
 
15
  # Create engine
16
- engine = create_engine(DATABASE_URL, pool_pre_ping=True)
 
17
  SessionLocal = sessionmaker(autocommit=False, autoflush=False, bind=engine)
18
  Base = declarative_base()
19
 
@@ -42,6 +40,12 @@ class Message(Base):
42
  # Database functions
43
  def init_db():
44
  """Create all tables"""
 
 
 
 
 
 
45
  Base.metadata.create_all(bind=engine)
46
 
47
  def get_db():
 
1
+ from sqlalchemy import create_engine, Column, String, Integer, Text, DateTime, ForeignKey
2
  from sqlalchemy.ext.declarative import declarative_base
3
  from sqlalchemy.orm import sessionmaker, relationship
4
  from datetime import datetime
5
  import uuid
6
  import os
7
 
8
+ # Use SQLite for reliable deployment on HF Spaces
9
+ # The /data directory is persistent in HF Spaces
10
+ DATABASE_URL = "sqlite:////data/chat_history.db"
 
 
 
11
 
12
  # Create engine
13
+ # check_same_thread=False is needed for SQLite with FastAPI
14
+ engine = create_engine(DATABASE_URL, connect_args={"check_same_thread": False})
15
  SessionLocal = sessionmaker(autocommit=False, autoflush=False, bind=engine)
16
  Base = declarative_base()
17
 
 
40
  # Database functions
41
  def init_db():
42
  """Create all tables"""
43
+ # Ensure /data directory exists (for HF Spaces)
44
+ if DATABASE_URL.startswith("sqlite:////data"):
45
+ os.makedirs("/data", exist_ok=True)
46
+ elif DATABASE_URL.startswith("sqlite:///./data"):
47
+ os.makedirs("./data", exist_ok=True)
48
+
49
  Base.metadata.create_all(bind=engine)
50
 
51
  def get_db():