Aasher commited on
Commit
eeb3f17
·
1 Parent(s): 34ec765

feat(db): add session management and database connection setup

Browse files
Files changed (3) hide show
  1. core/config.py +9 -0
  2. db/models/__init__.py +4 -0
  3. db/session.py +26 -0
core/config.py CHANGED
@@ -8,6 +8,15 @@ class Settings(BaseSettings):
8
  APP_NAME: str = "Makhfi AI"
9
  APP_VERSION: str = "0.1.0"
10
 
 
 
 
 
 
 
 
 
 
11
  # --- API Keys ---
12
  GOOGLE_API_KEY: str
13
  GROQ_API_KEY: str
 
8
  APP_NAME: str = "Makhfi AI"
9
  APP_VERSION: str = "0.1.0"
10
 
11
+ # --- Supabase Configuration ---
12
+ SUPABASE_KEY: str
13
+ SUPABASE_URL: str
14
+ SUPABASE_JWT_SECRET: str
15
+
16
+ # --- Database Configuration ---
17
+ DATABASE_URL: str
18
+ DB_CONNECT_ARGS: dict = {"sslmode": "require"}
19
+
20
  # --- API Keys ---
21
  GOOGLE_API_KEY: str
22
  GROQ_API_KEY: str
db/models/__init__.py CHANGED
@@ -0,0 +1,4 @@
 
 
 
 
 
1
+ from db.models.chat import Chat
2
+ from db.models.message import Message
3
+
4
+ __all__ = ["Chat", "Message"]
db/session.py ADDED
@@ -0,0 +1,26 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ from sqlmodel import SQLModel, create_engine, Session
2
+
3
+ from db.models import Chat, Message
4
+ from core.config import get_settings
5
+
6
+ settings = get_settings()
7
+
8
+ engine = create_engine(
9
+ settings.DATABASE_URL,
10
+ pool_pre_ping=True,
11
+ connect_args=settings.DB_CONNECT_ARGS
12
+ )
13
+
14
+ def get_db():
15
+ """
16
+ Dependency function to get a database session.
17
+ Ensures the session is always closed after the request.
18
+ """
19
+ with Session(engine) as session:
20
+ yield session
21
+
22
+ def create_db_and_tables():
23
+ """
24
+ Utility function to create database tables.
25
+ """
26
+ SQLModel.metadata.create_all(engine)