From cdb360d4f34c857d026a293bc0c2a3879caf782c Mon Sep 17 00:00:00 2001 From: julius Date: Sat, 25 Jan 2025 12:29:02 +0100 Subject: [PATCH] feat: implement server --- main.py | 50 ++++++++++++++++++++++++++++++++++++++++++++++++++ pyproject.toml | 13 +++++++++++++ 2 files changed, 63 insertions(+) create mode 100644 main.py create mode 100644 pyproject.toml diff --git a/main.py b/main.py new file mode 100644 index 0000000..6980bde --- /dev/null +++ b/main.py @@ -0,0 +1,50 @@ +from datetime import datetime +from fastapi import FastAPI, status +from fastapi.staticfiles import StaticFiles +from sqlmodel import ARRAY, Column, SQLModel, Field, Session, String, create_engine +from fastapi.middleware.cors import CORSMiddleware +import uvicorn + +with open("db.secrets", "r") as f: + db_secrets = f.readline().strip() + + +app = FastAPI(title="cutt") +engine = create_engine(db_secrets) +# SQLModel.metadata.create_all(engine) +origins = [ + "*", + "http://localhost", + "http://localhost:3000", + "http://localhost:8000", +] + +app.add_middleware( + CORSMiddleware, + allow_origins=origins, + allow_credentials=True, + allow_methods=["*"], + allow_headers=["*"], +) + + +class Chemistry(SQLModel, table=True): + id: int | None = Field(default=None, primary_key=True) + time: datetime | None = Field(default_factory=datetime.now) + user: str + love: list[str] = Field(sa_column=Column(ARRAY(String))) + hate: list[str] = Field(sa_column=Column(ARRAY(String))) + undecided: list[str] = Field(sa_column=Column(ARRAY(String))) + + +@app.post("/chemistry/", status_code=status.HTTP_200_OK) +def submit_chemistry(chemistry: Chemistry): + with Session(engine) as session: + session.add(chemistry) + session.commit() + + +app.mount("/", StaticFiles(directory="dist", html=True), name="site") + +# if __name__ == "__main__": +# uvicorn.run("main:app", workers=1, port=8096) diff --git a/pyproject.toml b/pyproject.toml new file mode 100644 index 0000000..96a3c26 --- /dev/null +++ b/pyproject.toml @@ -0,0 +1,13 @@ +[project] +name = "cutt" +version = "0.1.0" +description = "Add your description here" +author = "julius" +readme = "README.md" +requires-python = ">=3.13" +dependencies = [ + "fastapi[standard]>=0.115.7", + "psycopg>=3.2.4", + "sqlmodel>=0.0.22", + "uvicorn>=0.34.0", +]