From 57fb0c193ee1b1825a0153a1725919c65f24ea2c Mon Sep 17 00:00:00 2001 From: Yoga Pangestu Date: Fri, 17 Jul 2026 21:06:13 +0700 Subject: [PATCH] Add configuration and database setup for Profitra API --- app/__init__.py | 0 app/config.py | 20 ++++++++++++++++++++ app/database.py | 20 ++++++++++++++++++++ main.py | 27 +++++++++++++++++++++++++-- 4 files changed, 65 insertions(+), 2 deletions(-) create mode 100644 app/__init__.py create mode 100644 app/config.py create mode 100644 app/database.py diff --git a/app/__init__.py b/app/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/app/config.py b/app/config.py new file mode 100644 index 0000000..f368aef --- /dev/null +++ b/app/config.py @@ -0,0 +1,20 @@ +from pydantic_settings import BaseSettings + + +class Settings(BaseSettings): + DB_HOST: str = "localhost" + DB_PORT: int = 3306 + DB_USER: str = "root" + DB_PASS: str = "" + DB_NAME: str = "" + DB_ECHO: bool = False + + @property + def DATABASE_URL(self) -> str: + return f"mysql+pymysql://{self.DB_USER}:{self.DB_PASS}@{self.DB_HOST}:{self.DB_PORT}/{self.DB_NAME}" + + class Config: + env_file = ".env" + + +settings = Settings() diff --git a/app/database.py b/app/database.py new file mode 100644 index 0000000..7b361de --- /dev/null +++ b/app/database.py @@ -0,0 +1,20 @@ +from sqlalchemy import create_engine +from sqlalchemy.orm import DeclarativeBase, sessionmaker + +from app.config import settings + +engine = create_engine(settings.DATABASE_URL, echo=settings.DB_ECHO) + +SessionLocal = sessionmaker(bind=engine) + + +class Base(DeclarativeBase): + pass + + +def get_db(): + db = SessionLocal() + try: + yield db + finally: + db.close() diff --git a/main.py b/main.py index ee60be1..2579b66 100644 --- a/main.py +++ b/main.py @@ -1,8 +1,31 @@ from fastapi import FastAPI +from starlette.middleware.cors import CORSMiddleware -app = FastAPI() +from app.routers import ( + auth_router, + business_types_router, + plans_router, + subscriptions_router, + tenants_router, +) + +app = FastAPI(title="Profitra API", version="1.0.0") + +app.add_middleware( + CORSMiddleware, + allow_origins=["*"], + allow_credentials=True, + allow_methods=["*"], + allow_headers=["*"], +) + +app.include_router(auth_router) +app.include_router(business_types_router) +app.include_router(plans_router) +app.include_router(tenants_router) +app.include_router(subscriptions_router) @app.get("/") async def root(): - return {"message": "Hello World"} + return {"message": "Profitra API"}