Добавление backend

This commit is contained in:
Селигененко 2025-02-09 21:26:39 +03:00
parent 8f2e482287
commit 22d113ebd4
8 changed files with 120 additions and 0 deletions

19
backend/crud.py Normal file
View File

@ -0,0 +1,19 @@
from sqlalchemy.orm import Session
from . import models, schemas
def create_user(db: Session, user: schemas.UserCreate):
db_user = models.User(**user.dict())
db.add(db_user)
db.commit()
db.refresh(db_user)
return db_user
def get_user(db: Session, user_id: int):
return db.query(models.User).filter(models.User.id == user_id).first()
def create_task(db: Session, task: schemas.TaskCreate):
db_task = models.Task(**task.dict())
db.add(db_task)
db.commit()
db.refresh(db_task)
return db_task

10
backend/database.py Normal file
View File

@ -0,0 +1,10 @@
from sqlalchemy import create_engine
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy.orm import sessionmaker
SQLALCHEMY_DATABASE_URL = "postgresql://user:password@localhost/dbname"
engine = create_engine(SQLALCHEMY_DATABASE_URL)
SessionLocal = sessionmaker(autocommit=False, autoflush=False, bind=engine)
Base = declarative_base()

11
backend/main.py Normal file
View File

@ -0,0 +1,11 @@
from fastapi import FastAPI
from .routers import user, task
from .database import engine
from .models import Base
app = FastAPI()
Base.metadata.create_all(bind=engine)
app.include_router(user.router)
app.include_router(task.router)

23
backend/models.py Normal file
View File

@ -0,0 +1,23 @@
from sqlalchemy import Column, Integer, String
from .database import Base
class User(Base):
__tablename__ = "users"
id = Column(Integer, primary_key=True, index=True)
phone_number = Column(String, unique=True, index=True)
first_name = Column(String)
last_name = Column(String)
middle_name = Column(String)
address = Column(String)
email = Column(String, unique=True)
password = Column(String)
class Task(Base):
__tablename__ = "tasks"
id = Column(Integer, primary_key=True, index=True)
title = Column(String)
description = Column(String)
status = Column(String) # Например, "В ожидании", "На рассмотрении", "Завершено"
user_id = Column(Integer) # ID пользователя, создавшего задачу

5
backend/requirements.txt Normal file
View File

@ -0,0 +1,5 @@
fastapi
uvicorn
sqlalchemy
psycopg2-binary
pydantic

26
backend/routers/task.py Normal file
View File

@ -0,0 +1,26 @@
from fastapi import APIRouter, Depends
from sqlalchemy.orm import Session
from .. import crud, schemas
from ..database import SessionLocal
router = APIRouter()
@router.post("/tasks/", response_model=schemas.TaskCreate)
def create_task(task: schemas.TaskCreate, db: Session = Depends(SessionLocal)):
return crud.create_task(db=db, task=task)
@router.get("/tasks/{task_id}", response_model=schemas.TaskCreate)
def read_task(task_id: int, db: Session = Depends(SessionLocal)):
task = crud.get_task(db=db, task_id=task_id)
if task is None:
raise HTTPException(status_code=404, detail="Task not found")
return task
@router.post("/tasks/{task_id}/like")
def like_task(task_id: int, db: Session = Depends(get_db)):
task = crud.get_task(db, task_id)
if task:
task.likes += 1
db.commit()
return task
raise HTTPException(status_code=404, detail="Task not found")

10
backend/routers/user.py Normal file
View File

@ -0,0 +1,10 @@
from fastapi import APIRouter, Depends
from sqlalchemy.orm import Session
from .. import crud, schemas
from ..database import SessionLocal
router = APIRouter()
@router.post("/users/", response_model=schemas.UserCreate)
def create_user(user: schemas.UserCreate, db: Session = Depends(SessionLocal)):
return crud.create_user(db=db, user=user)

16
backend/schemas.py Normal file
View File

@ -0,0 +1,16 @@
from pydantic import BaseModel
class UserCreate(BaseModel):
phone_number: str
first_name: str
last_name: str
middle_name: str
address: str
email: str
password: str
class TaskCreate(BaseModel):
title: str
description: str
status: str
user_id: int