add crud for forms, templates, shipment, users and auth with keycloak
This commit is contained in:
@@ -1,19 +1,37 @@
|
||||
from fastapi import APIRouter
|
||||
from fastapi import APIRouter, HTTPException, Depends
|
||||
import src.messages as messages
|
||||
import src.models as models
|
||||
from src.database import get_session
|
||||
from sqlmodel import Session
|
||||
import src.forms.service as service
|
||||
|
||||
router = APIRouter(prefix='/forms')
|
||||
|
||||
@router.get('/')
|
||||
def get_forms():
|
||||
return []
|
||||
@router.get('/', response_model=list[models.FormPublic])
|
||||
def get_forms(session: Session = Depends(get_session)):
|
||||
return service.get_all(session)
|
||||
|
||||
@router.post('/')
|
||||
def create_form():
|
||||
return {}
|
||||
@router.get('/{id}', response_model=models.FormPublic)
|
||||
def get_forms(id: int, session: Session = Depends(get_session)):
|
||||
result = service.get_one(session, id)
|
||||
if result is None:
|
||||
raise HTTPException(status_code=404, detail=messages.notfound)
|
||||
return result
|
||||
|
||||
@router.put('/')
|
||||
def update_form():
|
||||
return {}
|
||||
@router.post('/', response_model=models.FormPublic)
|
||||
def create_form(form: models.FormCreate, session: Session = Depends(get_session)):
|
||||
return service.create_one(session, form)
|
||||
|
||||
@router.delete('/')
|
||||
def delete_form():
|
||||
return {}
|
||||
@router.put('/{id}', response_model=models.FormPublic)
|
||||
def update_form(id: int, form: models.FormUpdate, session: Session = Depends(get_session)):
|
||||
result = service.update_one(session, id, form)
|
||||
if result is None:
|
||||
raise HTTPException(status_code=404, detail=messages.notfound)
|
||||
return result
|
||||
|
||||
@router.delete('/{id}', response_model=models.FormPublic)
|
||||
def delete_form(id: int, session: Session = Depends(get_session)):
|
||||
result = service.delete_one(session, id)
|
||||
if result is None:
|
||||
raise HTTPException(status_code=404, detail=messages.notfound)
|
||||
return result
|
||||
|
||||
@@ -1,10 +0,0 @@
|
||||
from sqlmodel import Field, SQLModel
|
||||
form src.productors.model import Productor
|
||||
|
||||
class Form(SQLModel, table=True):
|
||||
id: int | None = Field(default=None, primary_key=True)
|
||||
name: str
|
||||
productor_id: int | None = Field(default=None, foreign_key="productor.id")
|
||||
shipment_number: int
|
||||
season: str
|
||||
|
||||
42
backend/src/forms/service.py
Normal file
42
backend/src/forms/service.py
Normal file
@@ -0,0 +1,42 @@
|
||||
from sqlmodel import Session, select
|
||||
import src.models as models
|
||||
|
||||
def get_all(session: Session) -> list[models.FormPublic]:
|
||||
statement = select(models.Form)
|
||||
return session.exec(statement).all()
|
||||
|
||||
def get_one(session: Session, form_id: int) -> models.FormPublic:
|
||||
return session.get(models.Form, form_id)
|
||||
|
||||
def create_one(session: Session, form: models.FormCreate) -> models.FormPublic:
|
||||
form_create = form.model_dump(exclude_unset=True)
|
||||
new_form = models.Form(**form_create)
|
||||
session.add(new_form)
|
||||
session.commit()
|
||||
session.refresh(new_form)
|
||||
return new_form
|
||||
|
||||
def update_one(session: Session, id: int, form: models.FormUpdate) -> models.FormPublic:
|
||||
statement = select(models.Form).where(models.Form.id == id)
|
||||
result = session.exec(statement)
|
||||
new_form = result.first()
|
||||
if not new_form:
|
||||
return None
|
||||
form_updates = form.model_dump(exclude_unset=True)
|
||||
for key, value in form_updates.items():
|
||||
setattr(new_form, key, value)
|
||||
session.add(new_form)
|
||||
session.commit()
|
||||
session.refresh(new_form)
|
||||
return new_form
|
||||
|
||||
def delete_one(session: Session, id: int) -> models.FormPublic:
|
||||
statement = select(models.Form).where(models.Form.id == id)
|
||||
result = session.exec(statement)
|
||||
form = result.first()
|
||||
if not form:
|
||||
return None
|
||||
result = models.FormPublic.model_validate(form)
|
||||
session.delete(form)
|
||||
session.commit()
|
||||
return result
|
||||
Reference in New Issue
Block a user