From 11cd291ca9d273ae5dfa147dbc940942672bbdca Mon Sep 17 00:00:00 2001 From: shahzeydyfah Date: Sat, 23 Mar 2024 11:49:00 +0330 Subject: [PATCH] feat:add price audit --- app/models/price_audit.py | 7 ++++++- app/repositories/price_audit.py | 19 +++++++++++++++---- app/urls/price_audit.py | 7 ++++++- 3 files changed, 27 insertions(+), 6 deletions(-) diff --git a/app/models/price_audit.py b/app/models/price_audit.py index dbdaabe..d82f524 100644 --- a/app/models/price_audit.py +++ b/app/models/price_audit.py @@ -1,6 +1,7 @@ import uuid from typing import Optional +import pydantic from pydantic import Field from core.models.base import BaseModel @@ -9,7 +10,7 @@ from core.models.base import BaseModel class NewPriceModel(BaseModel): id: Optional[uuid.UUID] = Field(alias='_id') project_id: uuid.UUID = Field(description='کد شناسایی پروژ') - number: Optional[int] = Field(description=" شماره آیتم") + number: Optional[str] = Field(description=" شماره آیتم") description: Optional[str] = Field(description='موضوع قیمت جدید') unit: Optional[str] = Field(description='واحد') count: Optional[int] = Field(description='تعداد') @@ -25,3 +26,7 @@ class NewPriceModel(BaseModel): """) location: Optional[str] = Field(description='موقعیت') +class CheckModel(pydantic.BaseModel): + project_id: uuid.UUID = Field(description='کد شناسایی پروژ') + number: Optional[str] = Field(description=" شماره آیتم") + diff --git a/app/repositories/price_audit.py b/app/repositories/price_audit.py index b71896d..aec9016 100644 --- a/app/repositories/price_audit.py +++ b/app/repositories/price_audit.py @@ -1,9 +1,20 @@ -from app.config import TaskEnv -from app.models.price_audit import NewPriceModel -from core.repositories.base import BaseRepository +from fastapi import HTTPException +from app.config import TaskEnv +from app.models.price_audit import * +from core.repositories.base import BaseRepository +from core.service.mongo_db import use_collection class PriceRepository(BaseRepository): def __init__(self): - super().__init__(collection=TaskEnv.CLN_AUDIT_PRICE, model=NewPriceModel) \ No newline at end of file + super().__init__(collection=TaskEnv.CLN_AUDIT_PRICE, model=NewPriceModel) + + async def check(self,_inp:CheckModel): + check_price = await use_collection(TaskEnv.CLN_AUDIT_PRICE).find_one({ + "project_id":_inp.project_id,"number":_inp.number + }) + if check_price: + raise HTTPException(status_code=422,detail="this item number is exist") + else: + return False \ No newline at end of file diff --git a/app/urls/price_audit.py b/app/urls/price_audit.py index 633b210..dfc5487 100644 --- a/app/urls/price_audit.py +++ b/app/urls/price_audit.py @@ -2,7 +2,7 @@ from uuid import UUID from fastapi import Body -from app.models.price_audit import NewPriceModel +from app.models.price_audit import NewPriceModel, CheckModel from app.repositories.price_audit import PriceRepository from core.app import app from core.utils.router import generate_router, shrink @@ -19,6 +19,11 @@ repo = PriceRepository() def create(coding: ThisModel = Body(...)): pass +@router.post('/check', response_model=bool, tags=_tag_base) +@shrink(repo.check) +def create(coding: CheckModel = Body(...)): + pass + @router.put('/{_id}', response_model=ThisModel, tags=_tag_base) @shrink(repo.update) def update(_id: UUID, coding: ThisModel = Body(...)):