From 527b84554a4edbdbc28d1d7f69e30b81ff11933e Mon Sep 17 00:00:00 2001 From: maksim Date: Sun, 9 Mar 2025 17:55:30 +0400 Subject: [PATCH] =?UTF-8?q?=D0=A3=D0=B4=D0=B0=D0=BB=D0=B8=D0=BB=20=D0=B2?= =?UTF-8?q?=D1=81=D1=8F=D0=BA=D0=BE=D0=B5=20=D0=BD=D0=B5=20=D0=BD=D1=83?= =?UTF-8?q?=D0=B6=D0=BD=D0=BE=D0=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../database/models/csv_file.py | 13 +++++++ .../database/models/h5_model.py | 0 .../database/models/model_statistics.py | 0 fastapi-app-upload/database/models/user.py | 0 .../repositories/csv_file_repository.py | 4 ++- .../repositories/h5_model_repository.py | 8 ----- .../model_statistics_repository.py | 11 ------ .../repositories/user_repository.py | 12 ------- fastapi-app-upload/routers/csv_router.py | 36 +++++++++++++++++++ fastapi-app-upload/schemas/h5_model_create.py | 7 ---- .../schemas/model_statistics_create.py | 10 ------ fastapi-app-upload/schemas/user_create.py | 8 ----- 12 files changed, 52 insertions(+), 57 deletions(-) delete mode 100644 fastapi-app-upload/database/models/h5_model.py delete mode 100644 fastapi-app-upload/database/models/model_statistics.py delete mode 100644 fastapi-app-upload/database/models/user.py delete mode 100644 fastapi-app-upload/repositories/h5_model_repository.py delete mode 100644 fastapi-app-upload/repositories/model_statistics_repository.py delete mode 100644 fastapi-app-upload/repositories/user_repository.py create mode 100644 fastapi-app-upload/routers/csv_router.py delete mode 100644 fastapi-app-upload/schemas/h5_model_create.py delete mode 100644 fastapi-app-upload/schemas/model_statistics_create.py delete mode 100644 fastapi-app-upload/schemas/user_create.py diff --git a/fastapi-app-upload/database/models/csv_file.py b/fastapi-app-upload/database/models/csv_file.py index e69de29..7a5207e 100644 --- a/fastapi-app-upload/database/models/csv_file.py +++ b/fastapi-app-upload/database/models/csv_file.py @@ -0,0 +1,13 @@ +from datetime import datetime + +from sqlalchemy import ForeignKey +from sqlalchemy.orm import DeclarativeBase, Mapped, mapped_column, relationship + +from database.database import Base + +class CSVFile(Base): + __tablename__ = "csv_files" + id: Mapped[int] = mapped_column(primary_key=True) + user_id: Mapped[int] + file_path: Mapped[str] + uploaded_at: Mapped[datetime] = mapped_column(default=datetime.utcnow) \ No newline at end of file diff --git a/fastapi-app-upload/database/models/h5_model.py b/fastapi-app-upload/database/models/h5_model.py deleted file mode 100644 index e69de29..0000000 diff --git a/fastapi-app-upload/database/models/model_statistics.py b/fastapi-app-upload/database/models/model_statistics.py deleted file mode 100644 index e69de29..0000000 diff --git a/fastapi-app-upload/database/models/user.py b/fastapi-app-upload/database/models/user.py deleted file mode 100644 index e69de29..0000000 diff --git a/fastapi-app-upload/repositories/csv_file_repository.py b/fastapi-app-upload/repositories/csv_file_repository.py index f398f74..d46c8bb 100644 --- a/fastapi-app-upload/repositories/csv_file_repository.py +++ b/fastapi-app-upload/repositories/csv_file_repository.py @@ -1,4 +1,6 @@ -from database.database import new_session, CSVFile +from database.database import new_session +from database.models.csv_file import CSVFile + class CSVFileRepository: @staticmethod diff --git a/fastapi-app-upload/repositories/h5_model_repository.py b/fastapi-app-upload/repositories/h5_model_repository.py deleted file mode 100644 index 09d237c..0000000 --- a/fastapi-app-upload/repositories/h5_model_repository.py +++ /dev/null @@ -1,8 +0,0 @@ -from database.database import new_session, H5Model -class H5ModelRepository: - @staticmethod - async def add_model(user_id: int, model_path: str): - async with new_session() as session: - model = H5Model(user_id=user_id, model_path=model_path) - session.add(model) - await session.commit() \ No newline at end of file diff --git a/fastapi-app-upload/repositories/model_statistics_repository.py b/fastapi-app-upload/repositories/model_statistics_repository.py deleted file mode 100644 index f65eb2a..0000000 --- a/fastapi-app-upload/repositories/model_statistics_repository.py +++ /dev/null @@ -1,11 +0,0 @@ -from database.database import new_session, ModelStatistics -from schemas.model_statistics_create import ModelStatisticsCreate - - -class ModelStatisticsRepository: - @staticmethod - async def add_statistics(data: ModelStatisticsCreate): - async with new_session() as session: - stats = ModelStatistics(**data.model_dump()) - session.add(stats) - await session.commit() \ No newline at end of file diff --git a/fastapi-app-upload/repositories/user_repository.py b/fastapi-app-upload/repositories/user_repository.py deleted file mode 100644 index b9a9979..0000000 --- a/fastapi-app-upload/repositories/user_repository.py +++ /dev/null @@ -1,12 +0,0 @@ -from database.database import new_session, User -from schemas.user_create import UserCreate - - -class UserRepository: - @staticmethod - async def create_user(data: UserCreate): - async with new_session() as session: - user = User(username=data.username, password_hash=data.password) - session.add(user) - await session.commit() - return user.id diff --git a/fastapi-app-upload/routers/csv_router.py b/fastapi-app-upload/routers/csv_router.py new file mode 100644 index 0000000..9b053b9 --- /dev/null +++ b/fastapi-app-upload/routers/csv_router.py @@ -0,0 +1,36 @@ +import os +from fastapi import APIRouter, UploadFile, File, Form, HTTPException +from pathlib import Path +from database.database import new_session +import shutil +import pandas as pd +from sqlalchemy import select + +from repositories.csv_file_repository import CSVFileRepository + +router = APIRouter() + +UPLOAD_FOLDER_CSV = Path("uploads/csv") +UPLOAD_FOLDER_CSV.mkdir(parents=True, exist_ok=True) + +UPLOAD_FOLDER_MODELS = "uploads/models" +os.makedirs(UPLOAD_FOLDER_MODELS, exist_ok=True) + +# Обновлённый метод для загрузки CSV файла +@router.post("/upload/csv/") +async def upload_csv(user_id: int = Form(...), file: UploadFile = File(...)): + + # Формируем путь для сохранения + user_folder = UPLOAD_FOLDER_CSV / str(user_id) + user_folder.mkdir(parents=True, exist_ok=True) + file_path = user_folder / file.filename + + # Сохраняем файл + with open(file_path, "wb") as buffer: + shutil.copyfileobj(file.file, buffer) + + # Сохраняем данные в БД, заменяя обратные слэши на прямые + normalized_path = str(file_path).replace("\\", "/") + await CSVFileRepository.upload_file(user_id=user_id, file_path=normalized_path) + return {"message": "CSV файл загружен", "file_path": normalized_path} + diff --git a/fastapi-app-upload/schemas/h5_model_create.py b/fastapi-app-upload/schemas/h5_model_create.py deleted file mode 100644 index a42e849..0000000 --- a/fastapi-app-upload/schemas/h5_model_create.py +++ /dev/null @@ -1,7 +0,0 @@ -from pydantic import BaseModel -from datetime import datetime -from typing import Optional - -# H5ModelCreate: для добавления модели -class H5ModelCreate(BaseModel): - path_model: str \ No newline at end of file diff --git a/fastapi-app-upload/schemas/model_statistics_create.py b/fastapi-app-upload/schemas/model_statistics_create.py deleted file mode 100644 index 35f2973..0000000 --- a/fastapi-app-upload/schemas/model_statistics_create.py +++ /dev/null @@ -1,10 +0,0 @@ -from pydantic import BaseModel -from datetime import datetime -from typing import Optional - -# ModelStatisticsCreate: для сохранения статистики модели -class ModelStatisticsCreate(BaseModel): - id_model: int - accuracy: float - loss: float - created_at: Optional[datetime] = None diff --git a/fastapi-app-upload/schemas/user_create.py b/fastapi-app-upload/schemas/user_create.py deleted file mode 100644 index b1ab7cb..0000000 --- a/fastapi-app-upload/schemas/user_create.py +++ /dev/null @@ -1,8 +0,0 @@ -from pydantic import BaseModel -from datetime import datetime -from typing import Optional - -# UserCreate: для создания пользователя -class UserCreate(BaseModel): - username: str - password: str \ No newline at end of file