Handling mongo indexes in firm
This commit is contained in:
@@ -1,12 +1,18 @@
|
||||
from datetime import datetime, UTC
|
||||
from typing import Optional
|
||||
from typing import Optional, TypedDict, ClassVar
|
||||
|
||||
from beanie import PydanticObjectId
|
||||
from motor.motor_asyncio import AsyncIOMotorCollection
|
||||
from pydantic import BaseModel, Field, computed_field
|
||||
|
||||
class CrudDocumentConfig(TypedDict, total=False):
|
||||
fulltext_search: list[str]
|
||||
indexes: list[str]
|
||||
|
||||
|
||||
class CrudDocument(BaseModel):
|
||||
document_config: ClassVar[CrudDocumentConfig] = CrudDocumentConfig()
|
||||
|
||||
id: Optional[PydanticObjectId] = Field(default=None)
|
||||
created_at: datetime = Field(default=datetime.now(UTC), nullable=False, title="Créé le")
|
||||
created_by: Optional[PydanticObjectId] = Field(default=None, title="Créé par")
|
||||
@@ -17,16 +23,13 @@ class CrudDocument(BaseModel):
|
||||
def _id(self):
|
||||
return self.id
|
||||
|
||||
@computed_field
|
||||
@computed_field(title="Label")
|
||||
def label(self) -> str:
|
||||
return self.compute_label()
|
||||
|
||||
def compute_label(self) -> str:
|
||||
return ""
|
||||
|
||||
class Settings:
|
||||
fulltext_search = []
|
||||
|
||||
@classmethod
|
||||
def _collection_name(cls):
|
||||
return cls.__name__
|
||||
@@ -35,6 +38,10 @@ class CrudDocument(BaseModel):
|
||||
def _get_collection(cls, db) -> AsyncIOMotorCollection:
|
||||
return db.get_collection(cls._collection_name())
|
||||
|
||||
@classmethod
|
||||
def create_index(cls, db, index):
|
||||
cls._get_collection(db).create_index(index)
|
||||
|
||||
@classmethod
|
||||
async def create(cls, db, create_schema):
|
||||
model_dict = create_schema.model_dump() | {"created_by": db.partner.id, "updated_by": db.partner.id}
|
||||
@@ -84,7 +91,6 @@ class CrudDocument(BaseModel):
|
||||
await cls._get_collection(db).delete_one({"_id": model.id})
|
||||
|
||||
|
||||
|
||||
def text_area(*args, **kwargs):
|
||||
kwargs['widget'] = {
|
||||
"formlyConfig": {
|
||||
|
||||
Reference in New Issue
Block a user