Skip to content

Generic views

AsyncGenericCreateAPIView

Bases: BaseGenericCreateAPIView, AsyncCreateAPIView, WithAsyncRepositoryMixin[M]

AsyncGenericCreateAPIView

Source code in fastapi_views/views/generics.py
class AsyncGenericCreateAPIView(
    BaseGenericCreateAPIView, AsyncCreateAPIView, WithAsyncRepositoryMixin[M]
):
    """AsyncGenericCreateAPIView"""

    async def create(self, create_schema: BaseModel) -> M:
        data = create_schema.model_dump()
        await self.before_create(data)
        obj = await self.repository.create(**data)
        if obj is None:
            msg = f"{self.get_name()} already exists"
            raise Conflict(msg)
        await self.after_create(obj)
        return obj

    async def before_create(self, data: dict[str, Any]) -> None:
        pass

    async def after_create(self, obj: M) -> None:
        pass

AsyncGenericDestroyAPIView

Bases: BaseGenericDestroyAPIView[PK], AsyncDestroyAPIView, WithAsyncRepositoryMixin

AsyncGenericDestroyAPIView

Source code in fastapi_views/views/generics.py
class AsyncGenericDestroyAPIView(
    BaseGenericDestroyAPIView[PK], AsyncDestroyAPIView, WithAsyncRepositoryMixin
):
    """AsyncGenericDestroyAPIView"""

    async def destroy(self, pk: PK) -> Any:
        args, kwargs = self.get_primary_key(pk, action="destroy")
        await self.repository.delete(*args, **kwargs)

AsyncGenericListAPIView

Bases: AsyncListAPIView, BaseGenericListAPIView, WithAsyncRepositoryMixin

AsyncGenericListAPIView

Source code in fastapi_views/views/generics.py
class AsyncGenericListAPIView(
    AsyncListAPIView, BaseGenericListAPIView, WithAsyncRepositoryMixin
):
    """AsyncGenericListAPIView"""

    async def list(self, filter: BaseFilter) -> Sequence[M] | Page[M]:
        self._apply_fields_filter(filter)
        if isinstance(filter, BasePaginationFilter):
            return await self.repository.get_filtered_page(filter)
        return await self.repository.list(
            **filter.model_dump(exclude=filter.special_fields)
        )

AsyncGenericPartialUpdateAPIView

Bases: BaseGenericPartialUpdateAPIView[PK], AsyncPartialUpdateAPIView, WithAsyncRepositoryMixin[M]

AsyncGenericPartialUpdateAPIView

Source code in fastapi_views/views/generics.py
class AsyncGenericPartialUpdateAPIView(
    BaseGenericPartialUpdateAPIView[PK],
    AsyncPartialUpdateAPIView,
    WithAsyncRepositoryMixin[M],
):
    """AsyncGenericPartialUpdateAPIView"""

    async def partial_update(self, pk: PK, partial_update_schema: BaseModel) -> Any:
        args, kwargs = self.get_primary_key(pk, action="update")
        data = partial_update_schema.model_dump(exclude_unset=True)
        await self.before_partial_update(data)
        obj = await self.repository.update_one(data, *args, **kwargs)
        if obj is None:
            self.raise_not_found_error()
        await self.after_partial_update(obj)
        return obj

    async def before_partial_update(self, data: dict[str, Any]) -> None:
        pass

    async def after_partial_update(self, new_obj: M) -> None:
        pass

AsyncGenericRetrieveAPIView

Bases: BaseGenericRetrieveAPIView[PK], AsyncRetrieveAPIView, WithAsyncRepositoryMixin[M]

AsyncGenericRetrieveAPIView

Source code in fastapi_views/views/generics.py
class AsyncGenericRetrieveAPIView(
    BaseGenericRetrieveAPIView[PK], AsyncRetrieveAPIView, WithAsyncRepositoryMixin[M]
):
    """AsyncGenericRetrieveAPIView"""

    async def retrieve(self, pk: PK) -> M | None:
        args, kwargs = self.get_primary_key(pk, action="retrieve")
        return await self.repository.get(*args, **kwargs)

AsyncGenericUpdateAPIView

Bases: BaseGenericUpdateAPIView[PK], AsyncUpdateAPIView, WithAsyncRepositoryMixin[M]

AsyncGenericUpdateAPIView

Source code in fastapi_views/views/generics.py
class AsyncGenericUpdateAPIView(
    BaseGenericUpdateAPIView[PK], AsyncUpdateAPIView, WithAsyncRepositoryMixin[M]
):
    """AsyncGenericUpdateAPIView"""

    async def update(self, pk: PK, update_schema: BaseModel) -> M:
        args, kwargs = self.get_primary_key(pk, action="update")
        data = update_schema.model_dump()
        await self.before_update(data)
        obj = await self.repository.update_one(data, *args, **kwargs)
        if obj is None:
            self.raise_not_found_error()
        await self.after_update(obj)
        return obj

    async def before_update(self, data: dict[str, Any]) -> None:
        pass

    async def after_update(self, obj: M) -> None:
        pass

AsyncGenericViewSet

Bases: AsyncGenericListAPIView, AsyncGenericRetrieveAPIView, AsyncGenericCreateAPIView, AsyncGenericUpdateAPIView, AsyncGenericPartialUpdateAPIView, AsyncGenericDestroyAPIView

AsyncGenericViewSet

Source code in fastapi_views/views/generics.py
class AsyncGenericViewSet(
    AsyncGenericListAPIView,
    AsyncGenericRetrieveAPIView,
    AsyncGenericCreateAPIView,
    AsyncGenericUpdateAPIView,
    AsyncGenericPartialUpdateAPIView,
    AsyncGenericDestroyAPIView,
):
    """AsyncGenericViewSet"""

GenericCreateAPIView

Bases: BaseGenericCreateAPIView, CreateAPIView, WithRepositoryMixin[M]

GenericCreateAPIView

Source code in fastapi_views/views/generics.py
class GenericCreateAPIView(
    BaseGenericCreateAPIView, CreateAPIView, WithRepositoryMixin[M]
):
    """GenericCreateAPIView"""

    def create(self, create_schema: BaseModel) -> M:
        data = create_schema.model_dump()
        self.before_create(data)
        obj = self.repository.create(**data)
        if obj is None:
            msg = f"{self.get_name()} already exists"
            raise Conflict(msg)
        self.after_create(obj)
        return obj

    def before_create(self, data: dict[str, Any]) -> None:
        pass

    def after_create(self, obj: M) -> None:
        pass

GenericDestroyAPIView

Bases: BaseGenericDestroyAPIView[PK], DestroyAPIView, WithRepositoryMixin

GenericDestroyAPIView

Source code in fastapi_views/views/generics.py
class GenericDestroyAPIView(
    BaseGenericDestroyAPIView[PK], DestroyAPIView, WithRepositoryMixin
):
    """GenericDestroyAPIView"""

    def destroy(self, pk: PK) -> Any:
        args, kwargs = self.get_primary_key(pk, action="destroy")
        self.repository.delete(*args, **kwargs)

GenericListAPIView

Bases: ListAPIView, BaseGenericListAPIView, WithRepositoryMixin

GenericListAPIView

Source code in fastapi_views/views/generics.py
class GenericListAPIView(ListAPIView, BaseGenericListAPIView, WithRepositoryMixin):
    """GenericListAPIView"""

    def list(self, filter: BaseFilter) -> Sequence[M] | Page[M]:
        self._apply_fields_filter(filter)
        if isinstance(filter, BasePaginationFilter):
            return self.repository.get_filtered_page(filter)
        return self.repository.list(**filter.model_dump(exclude=filter.special_fields))

GenericPartialUpdateAPIView

Bases: BaseGenericPartialUpdateAPIView[PK], PartialUpdateAPIView, WithRepositoryMixin[M]

GenericPartialUpdateAPIView

Source code in fastapi_views/views/generics.py
class GenericPartialUpdateAPIView(
    BaseGenericPartialUpdateAPIView[PK], PartialUpdateAPIView, WithRepositoryMixin[M]
):
    """GenericPartialUpdateAPIView"""

    def partial_update(self, pk: PK, partial_update_schema: BaseModel) -> Any:
        args, kwargs = self.get_primary_key(pk, action="update")
        data = partial_update_schema.model_dump(exclude_unset=True)
        self.before_partial_update(data)
        obj = self.repository.update_one(data, *args, **kwargs)
        if obj is None:
            self.raise_not_found_error()
        self.after_partial_update(obj)
        return obj

    def before_partial_update(self, data: dict[str, Any]) -> None:
        pass

    def after_partial_update(self, new_obj: M) -> None:
        pass

GenericRetrieveAPIView

Bases: BaseGenericRetrieveAPIView[PK], RetrieveAPIView, WithRepositoryMixin[M]

GenericRetrieveAPIView

Source code in fastapi_views/views/generics.py
class GenericRetrieveAPIView(
    BaseGenericRetrieveAPIView[PK], RetrieveAPIView, WithRepositoryMixin[M]
):
    """GenericRetrieveAPIView"""

    def retrieve(self, pk: PK) -> M | None:
        args, kwargs = self.get_primary_key(pk, action="retrieve")
        return self.repository.get(*args, **kwargs)

GenericUpdateAPIView

Bases: BaseGenericUpdateAPIView[PK], UpdateAPIView, WithRepositoryMixin[M]

GenericUpdateAPIView

Source code in fastapi_views/views/generics.py
class GenericUpdateAPIView(
    BaseGenericUpdateAPIView[PK], UpdateAPIView, WithRepositoryMixin[M]
):
    """GenericUpdateAPIView"""

    def update(self, pk: PK, update_schema: BaseModel) -> M:
        args, kwargs = self.get_primary_key(pk, action="update")
        data = update_schema.model_dump()
        self.before_update(data)
        obj = self.repository.update_one(data, *args, **kwargs)
        if obj is None:
            self.raise_not_found_error()
        self.after_update(obj)
        return obj

    def before_update(self, data: dict[str, Any]) -> None:
        pass

    def after_update(self, obj: M) -> None:
        pass

GenericViewSet

Bases: GenericListAPIView, GenericRetrieveAPIView, GenericCreateAPIView, GenericUpdateAPIView, GenericPartialUpdateAPIView, GenericDestroyAPIView

GenericViewSet

Source code in fastapi_views/views/generics.py
class GenericViewSet(
    GenericListAPIView,
    GenericRetrieveAPIView,
    GenericCreateAPIView,
    GenericUpdateAPIView,
    GenericPartialUpdateAPIView,
    GenericDestroyAPIView,
):
    """GenericViewSet"""