Implementing dataProvider and tuniong create route
This commit is contained in:
@@ -22,7 +22,8 @@ class FirmRead(BaseModel):
|
||||
name: str = Field()
|
||||
|
||||
class FirmCreate(FirmRead):
|
||||
pass
|
||||
instance: str = Field(max_length=32, min_length=3, pattern="^[0-9a-z-]+$")
|
||||
name: str = Field(max_length=32, min_length=3, pattern="^[0-9a-z-]+$")
|
||||
|
||||
class FirmUpdate(FirmRead):
|
||||
pass
|
||||
class FirmUpdate(BaseModel):
|
||||
owner: PydanticObjectId = Field()
|
||||
|
||||
@@ -12,15 +12,15 @@ model_update = FirmUpdate
|
||||
router = APIRouter()
|
||||
|
||||
@router.post("/", response_description="{} added to the database".format(model.__name__))
|
||||
async def create(item: model_create, user=Depends(get_current_user)) -> dict:
|
||||
async def create(item: model_create, user=Depends(get_current_user)) -> model_read:
|
||||
exists = await Firm.find_one({"name": item.name, "instance": item.instance})
|
||||
if exists:
|
||||
raise HTTPException(status_code=400, detail="Firm already exists")
|
||||
|
||||
item.created_by = user.id
|
||||
item.updated_by = user.id
|
||||
item.owner = user.id
|
||||
o = await model(**item.model_dump()).create()
|
||||
record = model(created_by=user.id, updated_by=user.id, owner=user.id, **item.model_dump())
|
||||
o = await record.create()
|
||||
user.firms.append(o.id)
|
||||
user.save()
|
||||
return model_read(**o.model_dump())
|
||||
|
||||
@router.get("/{id}", response_description="{} record retrieved".format(model.__name__))
|
||||
|
||||
@@ -1,12 +1,13 @@
|
||||
from beanie import PydanticObjectId
|
||||
from fastapi_users_db_beanie import BaseOAuthAccount, BeanieUserDatabase, BeanieBaseUserDocument
|
||||
from pydantic import Field
|
||||
|
||||
|
||||
class OAuthAccount(BaseOAuthAccount):
|
||||
pass
|
||||
|
||||
class User(BeanieBaseUserDocument):
|
||||
oauth_accounts: list[OAuthAccount] = Field(default_factory=list)
|
||||
firms: list[PydanticObjectId] = Field(default_factory=list)
|
||||
|
||||
class UserDatabase(BeanieUserDatabase):
|
||||
pass
|
||||
|
||||
@@ -1,5 +1,7 @@
|
||||
from beanie import PydanticObjectId
|
||||
from fastapi_users.schemas import BaseUser
|
||||
from pydantic import Field
|
||||
|
||||
|
||||
class UserSchema(BaseUser[PydanticObjectId]):
|
||||
pass
|
||||
firms: list[PydanticObjectId] = Field()
|
||||
|
||||
Reference in New Issue
Block a user