Commit 85673748 authored by Confusion-ymc's avatar Confusion-ymc

添加mongodb 集合获取依赖

parent 55cc38bf
......@@ -2,13 +2,13 @@ import datetime
from typing import Union
from fastapi import APIRouter, Depends
from motor.core import AgnosticCollection
from pymongo import ReturnDocument
from db.mongodb_helper import AioMongodbManager
from exception.db import NotFundError
from model import Response
from model.fund import FundType, CreateFund, StakingFund, NormalFund, UpdateFund
from dependencies import get_current_user, get_mongodb_manager
from dependencies import get_current_user, get_fund_collect
router = APIRouter()
......@@ -20,7 +20,7 @@ router = APIRouter()
async def create(
create_fund: CreateFund,
user: dict = Depends(get_current_user),
mongodb_manger: AioMongodbManager = Depends(get_mongodb_manager)
fund_collect: AgnosticCollection = Depends(get_fund_collect)
):
if create_fund.fund_type == FundType.staking:
create_model = StakingFund(**create_fund.dict(), **user)
......@@ -28,10 +28,9 @@ async def create(
else:
create_model = NormalFund(**create_fund.dict(), **user)
response = Response[NormalFund](data=create_model.dict())
client = mongodb_manger.get_client(name='pyfund', db='pyfund', collect='fund')
insert_data = create_model.dict()
await client.insert_one(insert_data)
await fund_collect.insert_one(insert_data)
return response
......@@ -41,15 +40,13 @@ async def update(
fund_id: str,
update_fund: UpdateFund,
user: dict = Depends(get_current_user),
mongodb_manger: AioMongodbManager = Depends(get_mongodb_manager)
fund_collect: AgnosticCollection = Depends(get_fund_collect)
):
client = mongodb_manger.get_client(name='pyfund', db='pyfund', collect='fund')
db_update_data = update_fund.dict(exclude_unset=True)
db_update_data.update({
"update_time": int(datetime.datetime.utcnow().timestamp())
})
data = await client.find_one_and_update({'id': fund_id, 'user_id': user['user_id']}, {'$set': db_update_data},
data = await fund_collect.find_one_and_update({'id': fund_id, 'user_id': user['user_id']}, {'$set': db_update_data},
return_document=ReturnDocument.AFTER)
if data['fund_type'] == FundType.staking:
return Response[StakingFund](data=StakingFund(**data))
......@@ -62,10 +59,9 @@ async def update(
async def get(
fund_id: str,
user: dict = Depends(get_current_user),
mongodb_manger: AioMongodbManager = Depends(get_mongodb_manager)
fund_collect: AgnosticCollection = Depends(get_fund_collect)
):
client = mongodb_manger.get_client(name='pyfund', db='pyfund', collect='fund')
data = await client.find_one({'id': fund_id, 'user_id': user['user_id']})
data = await fund_collect.find_one({'id': fund_id, 'user_id': user['user_id']})
if not data:
raise NotFundError()
if data['fund_type'] == FundType.staking:
......
from apscheduler.schedulers.asyncio import AsyncIOScheduler
from fastapi import Security
from fastapi import Security, Depends
from fastapi.security import HTTPAuthorizationCredentials
from motor.core import AgnosticCollection
from configs import settings
from db.mongodb_helper import AioMongodbManager
......@@ -20,3 +21,8 @@ def get_mongodb_manager(request: Request) -> AioMongodbManager:
def get_schedular(request: Request) -> AsyncIOScheduler:
return request.app.state.schedular
# 获取特定的mongodb集合
def get_fund_collect(mongodb_manger: AioMongodbManager = Depends(get_mongodb_manager)) -> AgnosticCollection:
return mongodb_manger.get_client(name='pyfund', db='pyfund', collect='fund')
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment