diff --git a/app/core/config.py b/app/core/config.py new file mode 100644 index 0000000..2309793 --- /dev/null +++ b/app/core/config.py @@ -0,0 +1,12 @@ +class Settings: + PROJECT_NAME:str = "VMS" + PROJECT_VERSION:str = "1.0.0" + + POSTGRES_USER : str = "VMSBase" + POSTGRES_PASSWORD = "VMSBasePass" + POSTGRES_SERVER : str = "localhost" + POSTGRES_PORT : str = "5432" + POSTGRES_DB : str = "VMSData" + DATABASE_URL = f"postgresql://{POSTGRES_USER}:{POSTGRES_PASSWORD}@{POSTGRES_SERVER}:{POSTGRES_PORT}/{POSTGRES_DB}" + +settings = Settings() \ No newline at end of file diff --git a/app/db/base_model.py b/app/db/base_model.py new file mode 100644 index 0000000..6df8ee3 --- /dev/null +++ b/app/db/base_model.py @@ -0,0 +1,11 @@ +from typing import Any +from sqlalchemy.ext.declarative import declared_attr +from sqlalchemy.orm import as_declarative + + +@as_declarative() +class Base: + id: Any + __name__: str + def __tablename__(cls) -> str: + return cls.__name__.lower() \ No newline at end of file diff --git a/app/db/session.py b/app/db/session.py new file mode 100644 index 0000000..05834f2 --- /dev/null +++ b/app/db/session.py @@ -0,0 +1,11 @@ +from sqlalchemy import create_engine +from sqlalchemy.orm import sessionmaker +from core.config import settings + + +SQLALCHEMY_DATABASE_URL = settings.DATABASE_URL +engine = create_engine(SQLALCHEMY_DATABASE_URL) +print(SQLALCHEMY_DATABASE_URL) + +SessionLocal = sessionmaker(autocommit=False,autoflush=False,bind=engine) + diff --git a/app/main.py b/app/main.py index f63c215..22d7908 100644 --- a/app/main.py +++ b/app/main.py @@ -1,6 +1,17 @@ from fastapi import FastAPI +from core.config import settings +from db.session import engine +from db.base_model import Base -app = FastAPI() + +def startup(): #start the project, and create the tables + app = FastAPI(title=settings.PROJECT_NAME,version=settings.PROJECT_VERSION) + Base.metadata.create_all(bind=engine) + return app + + + +app = startup() @app.get("/") def root():