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