diff --git a/fastapi-app-upload/.dockeringore b/fastapi-app-upload/.dockeringore new file mode 100644 index 0000000..2b8052f --- /dev/null +++ b/fastapi-app-upload/.dockeringore @@ -0,0 +1,3 @@ +venv +Dockerfile +tasks.db \ No newline at end of file diff --git a/fastapi-app-upload/.gitignore b/fastapi-app-upload/.gitignore new file mode 100644 index 0000000..979d491 --- /dev/null +++ b/fastapi-app-upload/.gitignore @@ -0,0 +1,4 @@ +venv +tasks.db +.idea +__pycache__ \ No newline at end of file diff --git a/fastapi-app-upload/Dockerfile b/fastapi-app-upload/Dockerfile new file mode 100644 index 0000000..a929a1f --- /dev/null +++ b/fastapi-app-upload/Dockerfile @@ -0,0 +1,14 @@ +FROM python:3.11-slim + +COPY ../../../../../AppData/Local/Temp . + +RUN pip install -r requirements.txt + +CMD ["uvicorn", "main:app", "--host", "0.0.0.0", "--port", "80"] + +# Для запуска введите две команды: +# docker build . --tag fastapi_app +# docker run -p 80:80 fastapi_app + +# Или одной командой +# docker build . --tag fastapi_app && docker run -p 80:80 fastapi_app diff --git a/fastapi-app-upload/README.md b/fastapi-app-upload/README.md new file mode 100644 index 0000000..b7630ff Binary files /dev/null and b/fastapi-app-upload/README.md differ diff --git a/fastapi-app-upload/database/database.py b/fastapi-app-upload/database/database.py new file mode 100644 index 0000000..0ad8f2d --- /dev/null +++ b/fastapi-app-upload/database/database.py @@ -0,0 +1,18 @@ +from datetime import datetime +from sqlalchemy.ext.asyncio import create_async_engine, async_sessionmaker +from sqlalchemy.orm import DeclarativeBase, Mapped, mapped_column, relationship +from sqlalchemy import ForeignKey + +engine = create_async_engine("sqlite+aiosqlite:///tasks.db") +new_session = async_sessionmaker(engine, expire_on_commit=False) + +class Base(DeclarativeBase): + pass + +async def create_tables(): + async with engine.begin() as conn: + await conn.run_sync(Base.metadata.create_all) + +async def delete_tables(): + async with engine.begin() as conn: + await conn.run_sync(Base.metadata.drop_all) diff --git a/fastapi-app-upload/main.py b/fastapi-app-upload/main.py new file mode 100644 index 0000000..7894914 --- /dev/null +++ b/fastapi-app-upload/main.py @@ -0,0 +1,22 @@ +from fastapi import FastAPI + +from contextlib import asynccontextmanager + +from database.database import create_tables, delete_tables +from routers.csv_router import router as csv_router + + + +@asynccontextmanager +async def lifespan(app: FastAPI): + await delete_tables() + print("База очищена") + await create_tables() + print("База готова к работе") + yield + print("Выключение") + + +app = FastAPI(lifespan=lifespan) +app.include_router(csv_router) + diff --git a/fastapi-app-upload/requirements.txt b/fastapi-app-upload/requirements.txt new file mode 100644 index 0000000..4e16092 Binary files /dev/null and b/fastapi-app-upload/requirements.txt differ