initial project structure
This commit is contained in:
commit
8b3b4f968a
|
|
@ -0,0 +1,13 @@
|
|||
# Python
|
||||
.venv/
|
||||
__pycache__/
|
||||
*.pyc
|
||||
|
||||
# Env
|
||||
.env
|
||||
|
||||
# Data (local only)
|
||||
data/
|
||||
|
||||
# Alembic cache
|
||||
alembic/versions/*.pyc
|
||||
|
|
@ -0,0 +1,9 @@
|
|||
import os
|
||||
from dotenv import load_dotenv
|
||||
|
||||
load_dotenv()
|
||||
|
||||
class Settings:
|
||||
DATABASE_URL: str = os.getenv("DATABASE_URL", "postgresql://user:pass@localhost:5432/document_processor")
|
||||
|
||||
settings = Settings()
|
||||
|
|
@ -0,0 +1,6 @@
|
|||
from sqlalchemy.orm import declarative_base
|
||||
|
||||
Base = declarative_base()
|
||||
|
||||
# import models so Alembic sees them later
|
||||
from app.models import document # noqa
|
||||
|
|
@ -0,0 +1,14 @@
|
|||
from sqlalchemy import create_engine
|
||||
from sqlalchemy.orm import sessionmaker
|
||||
|
||||
from app.core.config import settings
|
||||
|
||||
engine = create_engine(settings.DATABASE_URL, echo=True)
|
||||
SessionLocal = sessionmaker(autocommit=False, autoflush=False, bind=engine)
|
||||
|
||||
def get_db():
|
||||
db = SessionLocal()
|
||||
try:
|
||||
yield db
|
||||
finally:
|
||||
db.close()
|
||||
|
|
@ -0,0 +1,10 @@
|
|||
from fastapi import FastAPI
|
||||
from app.routes.health import router as health_router
|
||||
|
||||
app = FastAPI()
|
||||
|
||||
app.include_router(health_router)
|
||||
|
||||
@app.get("/")
|
||||
def root():
|
||||
return {"app": "document-processor", "status": "running"}
|
||||
|
|
@ -0,0 +1,12 @@
|
|||
from sqlalchemy import Column, Integer, String, DateTime
|
||||
from datetime import datetime
|
||||
|
||||
from app.db.base import Base
|
||||
|
||||
class Document(Base):
|
||||
__tablename__ = "documents"
|
||||
|
||||
id = Column(Integer, primary_key=True, index=True)
|
||||
file_path = Column(String, nullable=False)
|
||||
status = Column(String, default="pending")
|
||||
created_at = Column(DateTime, default=datetime.utcnow)
|
||||
|
|
@ -0,0 +1,11 @@
|
|||
from fastapi import APIRouter, Depends
|
||||
from sqlalchemy.orm import Session
|
||||
|
||||
from app.db.session import get_db
|
||||
|
||||
router = APIRouter()
|
||||
|
||||
@router.get("/health/db")
|
||||
def db_health(db: Session = Depends(get_db)):
|
||||
db.execute("SELECT 1")
|
||||
return {"status": "ok"}
|
||||
Loading…
Reference in New Issue