diff --git a/app/config/__init__.py b/app/config/__init__.py index 0ee2922..e8c4a3f 100644 --- a/app/config/__init__.py +++ b/app/config/__init__.py @@ -1,3 +1,4 @@ class TaskEnv: CLN_AUDIT_STATUS = 'audit_status' CLN_AUDIT_PARLIAMENT = 'audit_parliament' + CLN_AUDIT_PRICE = 'audit_price' diff --git a/app/models/price_audit.py b/app/models/price_audit.py new file mode 100644 index 0000000..dbdaabe --- /dev/null +++ b/app/models/price_audit.py @@ -0,0 +1,27 @@ +import uuid +from typing import Optional + +from pydantic import Field + +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=" شماره آیتم") + description: Optional[str] = Field(description='موضوع قیمت جدید') + unit: Optional[str] = Field(description='واحد') + count: Optional[int] = Field(description='تعداد') + fee_day: Optional[int] = Field(description='بهای روز') + fee_unit: Optional[int] = Field(description='بهای واحد مبنای پیمان') + total_day: Optional[int] = Field(description=' بهای کل روز = تعداد * بهای واحد روز') + total_unit: Optional[int] = Field(description=' بهای کل مبنای پیمان = تعداد * بهای واحد مبنای پیمان') + field: Optional[str] = Field(description=""" + 'electrical', + 'mechanic', + 'building', + 'other' + """) + location: Optional[str] = Field(description='موقعیت') + diff --git a/app/repositories/price_audit.py b/app/repositories/price_audit.py new file mode 100644 index 0000000..b71896d --- /dev/null +++ b/app/repositories/price_audit.py @@ -0,0 +1,9 @@ +from app.config import TaskEnv +from app.models.price_audit import NewPriceModel +from core.repositories.base import BaseRepository + + + +class PriceRepository(BaseRepository): + def __init__(self): + super().__init__(collection=TaskEnv.CLN_AUDIT_PRICE, model=NewPriceModel) \ No newline at end of file diff --git a/app/urls/__init__.py b/app/urls/__init__.py index 29fc0bc..e9e7bb7 100644 --- a/app/urls/__init__.py +++ b/app/urls/__init__.py @@ -3,3 +3,4 @@ from .grand_project import * from .design_progress import * from .register_status import * from .parliament_audit import * +from .price_audit import * diff --git a/app/urls/price_audit.py b/app/urls/price_audit.py new file mode 100644 index 0000000..633b210 --- /dev/null +++ b/app/urls/price_audit.py @@ -0,0 +1,37 @@ +from uuid import UUID + +from fastapi import Body + +from app.models.price_audit import NewPriceModel +from app.repositories.price_audit import PriceRepository +from core.app import app +from core.utils.router import generate_router, shrink +from core.utils.table_engine import TableEngineExport, TableEngineRequestType + +ThisModel = NewPriceModel +router_base_url = 'audit_price' +_tag_base = [router_base_url] +router = generate_router(router_base_url, auth_dependencies=False, version='v2') +repo = PriceRepository() + +@router.post('/create', response_model=ThisModel, tags=_tag_base) +@shrink(repo.create) +def create(coding: ThisModel = Body(...)): + pass + +@router.put('/{_id}', response_model=ThisModel, tags=_tag_base) +@shrink(repo.update) +def update(_id: UUID, coding: ThisModel = Body(...)): + pass + +@router.get('/{_id}', response_model=ThisModel, tags=_tag_base) +@shrink(repo.get) +def get(_id: UUID): + pass + +@router.post('', response_model=TableEngineExport[ThisModel], tags=_tag_base) +@shrink(repo.fetch) +def fetch(body: TableEngineRequestType = Body(...)): + pass + +app.include_router(router) \ No newline at end of file