first commit
This commit is contained in:
129
app/api/v1/product/product.py
Normal file
129
app/api/v1/product/product.py
Normal file
@ -0,0 +1,129 @@
|
||||
from time import time
|
||||
|
||||
from fastapi import APIRouter
|
||||
|
||||
from app import mongo
|
||||
from app.utils.response_util import response
|
||||
|
||||
router = APIRouter()
|
||||
|
||||
|
||||
@router.get("/get-by-id", tags=[""])
|
||||
async def get_by_id(product_id: int = None):
|
||||
start_time = time()
|
||||
|
||||
product = await mongo.products_collection.find_one({
|
||||
"id": product_id
|
||||
}, {
|
||||
"_id": False
|
||||
})
|
||||
|
||||
return response(product, start_time=start_time)
|
||||
|
||||
|
||||
@router.get("/get", tags=[""])
|
||||
async def get(client_id: int = None, search_input: str = None, page: int = 0, items_per_page: int = 10):
|
||||
start_time = time()
|
||||
filter = dict()
|
||||
|
||||
if client_id:
|
||||
filter["clientId"] = client_id
|
||||
|
||||
if search_input:
|
||||
filter["$or"] = [
|
||||
{
|
||||
"name": {
|
||||
"$regex": search_input
|
||||
}
|
||||
},
|
||||
{
|
||||
"article": {
|
||||
"$regex": search_input
|
||||
}
|
||||
},
|
||||
{
|
||||
"factoryArticle": {
|
||||
"$regex": search_input
|
||||
}
|
||||
},
|
||||
{
|
||||
"barcodes": {
|
||||
"$regex": search_input
|
||||
}
|
||||
}
|
||||
]
|
||||
|
||||
products = await mongo.products_collection.find(filter, {
|
||||
"_id": False
|
||||
}).limit(items_per_page).skip(items_per_page * page).to_list()
|
||||
products_count = await mongo.products_collection.count_documents(filter)
|
||||
|
||||
return response({
|
||||
"paginationInfo": {
|
||||
"totalItems": products_count,
|
||||
"totalPages": round(products_count / items_per_page)
|
||||
},
|
||||
"products": products
|
||||
}, start_time=start_time)
|
||||
|
||||
|
||||
@router.post("/create", tags=[""])
|
||||
async def create(data: dict):
|
||||
start_time = time()
|
||||
data["id"] = await mongo.get_next_id(mongo.products_collection)
|
||||
|
||||
try:
|
||||
await mongo.products_collection.insert_one(data)
|
||||
return response({
|
||||
"message": "Продукт создан",
|
||||
"ok": True
|
||||
}, start_time=start_time)
|
||||
except Exception as e:
|
||||
return response({
|
||||
"message": str(e),
|
||||
"ok": False
|
||||
}, start_time=start_time, code=400)
|
||||
|
||||
|
||||
@router.post("/update", tags=[""])
|
||||
async def update(params: dict):
|
||||
start_time = time()
|
||||
data = params["product"]
|
||||
|
||||
try:
|
||||
await mongo.products_collection.update_one({
|
||||
"id": data["id"]
|
||||
}, {
|
||||
"$set": data
|
||||
})
|
||||
|
||||
return response({
|
||||
"message": "Данные продукта обновлены",
|
||||
"ok": True
|
||||
}, start_time=start_time)
|
||||
except Exception as e:
|
||||
return response({
|
||||
"message": str(e),
|
||||
"ok": False
|
||||
}, start_time=start_time, code=400)
|
||||
|
||||
|
||||
@router.post("/delete", tags=[""])
|
||||
async def delete(params: dict):
|
||||
start_time = time()
|
||||
product_id = params["productId"]
|
||||
|
||||
try:
|
||||
await mongo.products_collection.delete_one({
|
||||
"id": product_id
|
||||
})
|
||||
|
||||
return response({
|
||||
"message": "Продукт удален",
|
||||
"ok": True
|
||||
}, start_time=start_time)
|
||||
except Exception as e:
|
||||
return response({
|
||||
"message": str(e),
|
||||
"ok": False
|
||||
}, start_time=start_time, code=400)
|
||||
Reference in New Issue
Block a user