diff --git a/src/dispatch/auth/models.py b/src/dispatch/auth/models.py index bbac7781f81f..d6cd1828d2d8 100644 --- a/src/dispatch/auth/models.py +++ b/src/dispatch/auth/models.py @@ -21,7 +21,7 @@ ) from dispatch.database.core import Base from dispatch.enums import UserRoles -from dispatch.models import OrganizationSlug, PrimaryKey, TimeStampMixin, DispatchBase +from dispatch.models import OrganizationSlug, PrimaryKey, TimeStampMixin, DispatchBase, Pagination from dispatch.organization.models import Organization, OrganizationRead from dispatch.project.models import Project, ProjectRead @@ -187,6 +187,5 @@ class UserRegisterResponse(DispatchBase): token: Optional[str] = Field(None, nullable=True) -class UserPagination(DispatchBase): - total: int +class UserPagination(Pagination): items: List[UserRead] = [] diff --git a/src/dispatch/case/models.py b/src/dispatch/case/models.py index 32e0d0392440..2d1100cc3415 100644 --- a/src/dispatch/case/models.py +++ b/src/dispatch/case/models.py @@ -27,7 +27,7 @@ from dispatch.group.models import Group, GroupRead from dispatch.incident.models import IncidentReadMinimal from dispatch.messaging.strings import CASE_RESOLUTION_DEFAULT -from dispatch.models import DispatchBase, ProjectMixin, TimeStampMixin +from dispatch.models import DispatchBase, ProjectMixin, Pagination, TimeStampMixin from dispatch.models import NameStr, PrimaryKey from dispatch.participant.models import Participant from dispatch.participant.models import ParticipantRead, ParticipantReadMinimal, ParticipantUpdate @@ -301,8 +301,5 @@ def find_exclusive(cls, v): return v -class CasePagination(DispatchBase): +class CasePagination(Pagination): items: List[CaseReadMinimal] = [] - itemsPerPage: int - page: int - total: int diff --git a/src/dispatch/case/priority/models.py b/src/dispatch/case/priority/models.py index 3dfd61656774..0579624f4971 100644 --- a/src/dispatch/case/priority/models.py +++ b/src/dispatch/case/priority/models.py @@ -8,7 +8,7 @@ from sqlalchemy_utils import TSVectorType from dispatch.database.core import Base, ensure_unique_default_per_project -from dispatch.models import DispatchBase, NameStr, ProjectMixin, PrimaryKey +from dispatch.models import DispatchBase, NameStr, ProjectMixin, PrimaryKey, Pagination from dispatch.project.models import ProjectRead @@ -56,6 +56,5 @@ class CasePriorityRead(CasePriorityBase): id: Optional[PrimaryKey] -class CasePriorityPagination(DispatchBase): - total: int +class CasePriorityPagination(Pagination): items: List[CasePriorityRead] = [] diff --git a/src/dispatch/case/severity/models.py b/src/dispatch/case/severity/models.py index f817f8adafe8..0712cb01c0f0 100644 --- a/src/dispatch/case/severity/models.py +++ b/src/dispatch/case/severity/models.py @@ -8,7 +8,7 @@ from sqlalchemy_utils import TSVectorType from dispatch.database.core import Base, ensure_unique_default_per_project -from dispatch.models import DispatchBase, NameStr, ProjectMixin, PrimaryKey +from dispatch.models import DispatchBase, NameStr, ProjectMixin, PrimaryKey, Pagination from dispatch.project.models import ProjectRead @@ -60,6 +60,5 @@ class CaseSeverityRead(CaseSeverityBase): id: PrimaryKey -class CaseSeverityPagination(DispatchBase): - total: int +class CaseSeverityPagination(Pagination): items: List[CaseSeverityRead] = [] diff --git a/src/dispatch/case/type/models.py b/src/dispatch/case/type/models.py index 2db7078c7218..94e310149f63 100644 --- a/src/dispatch/case/type/models.py +++ b/src/dispatch/case/type/models.py @@ -1,7 +1,7 @@ from typing import List, Optional -from pydantic import Field, validator -from sqlalchemy import Column, Boolean, ForeignKey, Integer, String, JSON +from pydantic import Field, validator +from sqlalchemy import JSON, Boolean, Column, ForeignKey, Integer, String from sqlalchemy.event import listen from sqlalchemy.ext.hybrid import hybrid_method from sqlalchemy.orm import relationship @@ -10,8 +10,7 @@ from dispatch.database.core import Base, ensure_unique_default_per_project from dispatch.enums import Visibility -from dispatch.models import DispatchBase, ProjectMixin -from dispatch.models import NameStr, PrimaryKey +from dispatch.models import DispatchBase, NameStr, Pagination, PrimaryKey, ProjectMixin from dispatch.plugin.models import PluginMetadata from dispatch.project.models import ProjectRead @@ -111,6 +110,5 @@ class CaseTypeRead(CaseTypeBase): id: PrimaryKey -class CaseTypePagination(DispatchBase): - total: int +class CaseTypePagination(Pagination): items: List[CaseTypeRead] = [] diff --git a/src/dispatch/data/alert/models.py b/src/dispatch/data/alert/models.py index ca819c63c750..8fd6a5cc0176 100644 --- a/src/dispatch/data/alert/models.py +++ b/src/dispatch/data/alert/models.py @@ -5,7 +5,7 @@ from sqlalchemy_utils import TSVectorType from dispatch.database.core import Base -from dispatch.models import DispatchBase, TimeStampMixin, PrimaryKey +from dispatch.models import DispatchBase, TimeStampMixin, PrimaryKey, Pagination class Alert(Base, TimeStampMixin): @@ -38,6 +38,5 @@ class AlertRead(AlertBase): id: PrimaryKey -class AlertPagination(DispatchBase): +class AlertPagination(Pagination): items: List[AlertRead] - total: int diff --git a/src/dispatch/data/query/models.py b/src/dispatch/data/query/models.py index 061ea0cdce08..2fd669bb3458 100644 --- a/src/dispatch/data/query/models.py +++ b/src/dispatch/data/query/models.py @@ -6,7 +6,13 @@ from sqlalchemy_utils import TSVectorType from dispatch.database.core import Base -from dispatch.models import DispatchBase, ProjectMixin, TimeStampMixin, PrimaryKey +from dispatch.models import ( + DispatchBase, + ProjectMixin, + Pagination, + TimeStampMixin, + PrimaryKey, +) from dispatch.project.models import ProjectRead from dispatch.data.source.models import SourceRead @@ -65,6 +71,5 @@ class QueryRead(QueryBase): id: PrimaryKey -class QueryPagination(DispatchBase): +class QueryPagination(Pagination): items: List[QueryRead] - total: int diff --git a/src/dispatch/data/source/data_format/models.py b/src/dispatch/data/source/data_format/models.py index 1f84ad7e8908..aec18086eb6b 100644 --- a/src/dispatch/data/source/data_format/models.py +++ b/src/dispatch/data/source/data_format/models.py @@ -11,7 +11,7 @@ from sqlalchemy_utils import TSVectorType from dispatch.database.core import Base -from dispatch.models import DispatchBase, ProjectMixin, PrimaryKey +from dispatch.models import DispatchBase, ProjectMixin, Pagination, PrimaryKey from dispatch.project.models import ProjectRead @@ -41,6 +41,5 @@ class SourceDataFormatUpdate(SourceDataFormatBase): id: PrimaryKey -class SourceDataFormatPagination(DispatchBase): +class SourceDataFormatPagination(Pagination): items: List[SourceDataFormatRead] - total: int diff --git a/src/dispatch/data/source/environment/models.py b/src/dispatch/data/source/environment/models.py index 8a31904bb6d9..1fa2507df3fc 100644 --- a/src/dispatch/data/source/environment/models.py +++ b/src/dispatch/data/source/environment/models.py @@ -11,7 +11,7 @@ from sqlalchemy_utils import TSVectorType from dispatch.database.core import Base -from dispatch.models import DispatchBase, ProjectMixin, PrimaryKey +from dispatch.models import DispatchBase, ProjectMixin, Pagination, PrimaryKey from dispatch.project.models import ProjectRead @@ -41,6 +41,5 @@ class SourceEnvironmentUpdate(SourceEnvironmentBase): id: PrimaryKey -class SourceEnvironmentPagination(DispatchBase): +class SourceEnvironmentPagination(Pagination): items: List[SourceEnvironmentRead] - total: int diff --git a/src/dispatch/data/source/models.py b/src/dispatch/data/source/models.py index d21ef9b61853..9285e14a8aa8 100644 --- a/src/dispatch/data/source/models.py +++ b/src/dispatch/data/source/models.py @@ -20,7 +20,13 @@ from sqlalchemy_utils import TSVectorType from dispatch.database.core import Base -from dispatch.models import DispatchBase, ProjectMixin, TimeStampMixin, PrimaryKey +from dispatch.models import ( + DispatchBase, + ProjectMixin, + Pagination, + TimeStampMixin, + PrimaryKey, +) from dispatch.project.models import ProjectRead from dispatch.data.source.environment.models import SourceEnvironmentRead from dispatch.data.source.data_format.models import SourceDataFormatRead @@ -143,6 +149,5 @@ class SourceRead(SourceBase): id: PrimaryKey -class SourcePagination(DispatchBase): +class SourcePagination(Pagination): items: List[SourceRead] - total: int diff --git a/src/dispatch/data/source/status/models.py b/src/dispatch/data/source/status/models.py index 5b4916423280..700ae865ecc2 100644 --- a/src/dispatch/data/source/status/models.py +++ b/src/dispatch/data/source/status/models.py @@ -11,7 +11,7 @@ from sqlalchemy_utils import TSVectorType from dispatch.database.core import Base -from dispatch.models import DispatchBase, ProjectMixin, PrimaryKey +from dispatch.models import DispatchBase, ProjectMixin, Pagination, PrimaryKey from dispatch.project.models import ProjectRead @@ -41,6 +41,5 @@ class SourceStatusUpdate(SourceStatusBase): id: PrimaryKey -class SourceStatusPagination(DispatchBase): +class SourceStatusPagination(Pagination): items: List[SourceStatusRead] - total: int diff --git a/src/dispatch/data/source/transport/models.py b/src/dispatch/data/source/transport/models.py index c8002e954567..12be6e5ff423 100644 --- a/src/dispatch/data/source/transport/models.py +++ b/src/dispatch/data/source/transport/models.py @@ -11,7 +11,7 @@ from sqlalchemy_utils import TSVectorType from dispatch.database.core import Base -from dispatch.models import DispatchBase, ProjectMixin, PrimaryKey +from dispatch.models import DispatchBase, ProjectMixin, Pagination, PrimaryKey from dispatch.project.models import ProjectRead @@ -41,6 +41,5 @@ class SourceTransportUpdate(SourceTransportBase): id: PrimaryKey -class SourceTransportPagination(DispatchBase): +class SourceTransportPagination(Pagination): items: List[SourceTransportRead] - total: int diff --git a/src/dispatch/data/source/type/models.py b/src/dispatch/data/source/type/models.py index b31a54ac27b9..166fe4b35c4e 100644 --- a/src/dispatch/data/source/type/models.py +++ b/src/dispatch/data/source/type/models.py @@ -11,7 +11,7 @@ from sqlalchemy_utils import TSVectorType from dispatch.database.core import Base -from dispatch.models import DispatchBase, ProjectMixin, PrimaryKey +from dispatch.models import DispatchBase, ProjectMixin, Pagination, PrimaryKey from dispatch.project.models import ProjectRead @@ -41,6 +41,5 @@ class SourceTypeUpdate(SourceTypeBase): id: PrimaryKey -class SourceTypePagination(DispatchBase): +class SourceTypePagination(Pagination): items: List[SourceTypeRead] - total: int diff --git a/src/dispatch/definition/models.py b/src/dispatch/definition/models.py index 4f46c7882e30..af3d6a3902c5 100644 --- a/src/dispatch/definition/models.py +++ b/src/dispatch/definition/models.py @@ -8,11 +8,7 @@ from sqlalchemy_utils import TSVectorType from dispatch.database.core import Base -from dispatch.models import ( - PrimaryKey, - DispatchBase, - ProjectMixin, -) +from dispatch.models import PrimaryKey, DispatchBase, ProjectMixin, Pagination from dispatch.project.models import ProjectRead # Association tables @@ -73,6 +69,5 @@ class DefinitionRead(DefinitionBase): terms: Optional[List[DefinitionTerm]] -class DefinitionPagination(DispatchBase): - total: int +class DefinitionPagination(Pagination): items: List[DefinitionRead] = [] diff --git a/src/dispatch/document/models.py b/src/dispatch/document/models.py index accb68dbbeb5..2396abe2eaf2 100644 --- a/src/dispatch/document/models.py +++ b/src/dispatch/document/models.py @@ -16,7 +16,7 @@ from dispatch.database.core import Base from dispatch.messaging.strings import DOCUMENT_DESCRIPTIONS -from dispatch.models import DispatchBase, ResourceBase, ProjectMixin, ResourceMixin, EvergreenMixin +from dispatch.models import ResourceBase, ProjectMixin, ResourceMixin, EvergreenMixin, Pagination from dispatch.project.models import ProjectRead from dispatch.search_filter.models import SearchFilterRead @@ -73,6 +73,5 @@ def set_description(cls, v, values): return v -class DocumentPagination(DispatchBase): - total: int +class DocumentPagination(Pagination): items: List[DocumentRead] = [] diff --git a/src/dispatch/entity/models.py b/src/dispatch/entity/models.py index e403d472b5f9..8e6deef99f44 100644 --- a/src/dispatch/entity/models.py +++ b/src/dispatch/entity/models.py @@ -7,7 +7,13 @@ from sqlalchemy_utils import TSVectorType from dispatch.database.core import Base -from dispatch.models import DispatchBase, TimeStampMixin, ProjectMixin, PrimaryKey +from dispatch.models import ( + DispatchBase, + TimeStampMixin, + ProjectMixin, + PrimaryKey, + Pagination, +) from dispatch.project.models import ProjectRead from dispatch.entity_type.models import ( EntityTypeCreate, @@ -79,6 +85,5 @@ class EntityReadMinimal(DispatchBase): entity_type: Optional[EntityTypeReadMinimal] -class EntityPagination(DispatchBase): +class EntityPagination(Pagination): items: List[EntityRead] - total: int diff --git a/src/dispatch/entity_type/models.py b/src/dispatch/entity_type/models.py index af89a39296fe..d57012e79492 100644 --- a/src/dispatch/entity_type/models.py +++ b/src/dispatch/entity_type/models.py @@ -7,7 +7,14 @@ from dispatch.enums import DispatchEnum from dispatch.database.core import Base -from dispatch.models import DispatchBase, NameStr, TimeStampMixin, ProjectMixin, PrimaryKey +from dispatch.models import ( + DispatchBase, + NameStr, + TimeStampMixin, + ProjectMixin, + PrimaryKey, + Pagination, +) from dispatch.project.models import ProjectRead @@ -80,6 +87,5 @@ class EntityTypeReadMinimal(DispatchBase): regular_expression: Optional[str] = Field(None, nullable=True) -class EntityTypePagination(DispatchBase): +class EntityTypePagination(Pagination): items: List[EntityTypeRead] - total: int diff --git a/src/dispatch/feedback/models.py b/src/dispatch/feedback/models.py index 52949913d080..445ff3a94364 100644 --- a/src/dispatch/feedback/models.py +++ b/src/dispatch/feedback/models.py @@ -9,7 +9,7 @@ from dispatch.database.core import Base from dispatch.feedback.enums import FeedbackRating from dispatch.incident.models import IncidentReadMinimal -from dispatch.models import DispatchBase, TimeStampMixin, PrimaryKey +from dispatch.models import DispatchBase, TimeStampMixin, PrimaryKey, Pagination from dispatch.participant.models import ParticipantRead from dispatch.project.models import ProjectRead @@ -59,6 +59,5 @@ class FeedbackRead(FeedbackBase): project: Optional[ProjectRead] -class FeedbackPagination(DispatchBase): +class FeedbackPagination(Pagination): items: List[FeedbackRead] - total: int diff --git a/src/dispatch/incident/models.py b/src/dispatch/incident/models.py index e569b4c035ab..50242f4d52d4 100644 --- a/src/dispatch/incident/models.py +++ b/src/dispatch/incident/models.py @@ -36,7 +36,14 @@ ) from dispatch.incident_cost.models import IncidentCostRead, IncidentCostUpdate from dispatch.messaging.strings import INCIDENT_RESOLUTION_DEFAULT -from dispatch.models import DispatchBase, NameStr, PrimaryKey, ProjectMixin, TimeStampMixin +from dispatch.models import ( + DispatchBase, + NameStr, + PrimaryKey, + ProjectMixin, + TimeStampMixin, + Pagination, +) from dispatch.participant.models import ( Participant, ParticipantRead, @@ -378,15 +385,11 @@ class IncidentRead(IncidentBase): workflow_instances: Optional[List[WorkflowInstanceRead]] = [] -class IncidentExpandedPagination(DispatchBase): - total: int +class IncidentExpandedPagination(Pagination): itemsPerPage: int page: int items: List[IncidentRead] = [] -class IncidentPagination(DispatchBase): - total: int - itemsPerPage: int - page: int +class IncidentPagination(Pagination): items: List[IncidentReadMinimal] = [] diff --git a/src/dispatch/incident/priority/models.py b/src/dispatch/incident/priority/models.py index e310c9bf11c3..91ff59e303c8 100644 --- a/src/dispatch/incident/priority/models.py +++ b/src/dispatch/incident/priority/models.py @@ -8,7 +8,7 @@ from sqlalchemy_utils import TSVectorType from dispatch.database.core import Base, ensure_unique_default_per_project -from dispatch.models import DispatchBase, NameStr, ProjectMixin, PrimaryKey +from dispatch.models import DispatchBase, NameStr, ProjectMixin, PrimaryKey, Pagination from dispatch.project.models import ProjectRead @@ -75,6 +75,5 @@ class IncidentPriorityReadMinimal(DispatchBase): color: Optional[Color] = Field(None, nullable=True) -class IncidentPriorityPagination(DispatchBase): - total: int +class IncidentPriorityPagination(Pagination): items: List[IncidentPriorityRead] = [] diff --git a/src/dispatch/incident/severity/models.py b/src/dispatch/incident/severity/models.py index b162ea71a323..8944a443d06c 100644 --- a/src/dispatch/incident/severity/models.py +++ b/src/dispatch/incident/severity/models.py @@ -8,7 +8,7 @@ from sqlalchemy_utils import TSVectorType from dispatch.database.core import Base, ensure_unique_default_per_project -from dispatch.models import DispatchBase, NameStr, ProjectMixin, PrimaryKey +from dispatch.models import DispatchBase, NameStr, ProjectMixin, PrimaryKey, Pagination from dispatch.project.models import ProjectRead @@ -69,6 +69,5 @@ class IncidentSeverityReadMinimal(DispatchBase): name: NameStr -class IncidentSeverityPagination(DispatchBase): - total: int +class IncidentSeverityPagination(Pagination): items: List[IncidentSeverityRead] = [] diff --git a/src/dispatch/incident/type/models.py b/src/dispatch/incident/type/models.py index 51bc5457cf7b..a29d1c918782 100644 --- a/src/dispatch/incident/type/models.py +++ b/src/dispatch/incident/type/models.py @@ -12,7 +12,7 @@ from dispatch.database.core import Base, ensure_unique_default_per_project from dispatch.enums import Visibility -from dispatch.models import DispatchBase, ProjectMixin +from dispatch.models import DispatchBase, ProjectMixin, Pagination from dispatch.plugin.models import PluginMetadata from dispatch.project.models import ProjectRead @@ -121,6 +121,5 @@ class IncidentTypeReadMinimal(DispatchBase): default: Optional[bool] = False -class IncidentTypePagination(DispatchBase): - total: int +class IncidentTypePagination(Pagination): items: List[IncidentTypeRead] = [] diff --git a/src/dispatch/incident_cost/models.py b/src/dispatch/incident_cost/models.py index 867b29e611ae..03582a955d13 100644 --- a/src/dispatch/incident_cost/models.py +++ b/src/dispatch/incident_cost/models.py @@ -1,15 +1,12 @@ from typing import List, Optional -from dispatch.models import PrimaryKey -from sqlalchemy.orm import relationship from sqlalchemy import Column, ForeignKey, Integer, Numeric from sqlalchemy.ext.associationproxy import association_proxy +from sqlalchemy.orm import relationship from dispatch.database.core import Base -from dispatch.incident_cost_type.models import ( - IncidentCostTypeRead, -) -from dispatch.models import DispatchBase, ProjectMixin, TimeStampMixin +from dispatch.incident_cost_type.models import IncidentCostTypeRead +from dispatch.models import DispatchBase, Pagination, PrimaryKey, ProjectMixin, TimeStampMixin from dispatch.project.models import ProjectRead @@ -46,6 +43,5 @@ class IncidentCostRead(IncidentCostBase): incident_cost_type: IncidentCostTypeRead -class IncidentCostPagination(DispatchBase): - total: int +class IncidentCostPagination(Pagination): items: List[IncidentCostRead] = [] diff --git a/src/dispatch/incident_cost_type/models.py b/src/dispatch/incident_cost_type/models.py index db4c3f7730b5..a3d0804cf23b 100644 --- a/src/dispatch/incident_cost_type/models.py +++ b/src/dispatch/incident_cost_type/models.py @@ -8,7 +8,14 @@ from sqlalchemy_utils import TSVectorType, JSONType from dispatch.database.core import Base, ensure_unique_default_per_project -from dispatch.models import DispatchBase, NameStr, ProjectMixin, TimeStampMixin, PrimaryKey +from dispatch.models import ( + DispatchBase, + NameStr, + ProjectMixin, + TimeStampMixin, + Pagination, + PrimaryKey, +) from dispatch.project.models import ProjectRead @@ -55,6 +62,5 @@ class IncidentCostTypeRead(IncidentCostTypeBase): id: PrimaryKey -class IncidentCostTypePagination(DispatchBase): - total: int +class IncidentCostTypePagination(Pagination): items: List[IncidentCostTypeRead] = [] diff --git a/src/dispatch/individual/models.py b/src/dispatch/individual/models.py index a092cc27e674..6d53a32249e7 100644 --- a/src/dispatch/individual/models.py +++ b/src/dispatch/individual/models.py @@ -10,7 +10,13 @@ from dispatch.database.core import Base from dispatch.project.models import ProjectRead from dispatch.search_filter.models import SearchFilterRead -from dispatch.models import ContactBase, ContactMixin, DispatchBase, ProjectMixin, PrimaryKey +from dispatch.models import ( + ContactBase, + ContactMixin, + ProjectMixin, + PrimaryKey, + Pagination, +) # Association tables for many to many relationships assoc_individual_filters = Table( @@ -84,6 +90,5 @@ class IndividualContactReadMinimal(IndividualContactBase): updated_at: Optional[datetime] = None -class IndividualContactPagination(DispatchBase): - total: int +class IndividualContactPagination(Pagination): items: List[IndividualContactRead] = [] diff --git a/src/dispatch/models.py b/src/dispatch/models.py index 7b2c85bd64ed..f2b94f8d89bb 100644 --- a/src/dispatch/models.py +++ b/src/dispatch/models.py @@ -109,6 +109,12 @@ class Config: } +class Pagination(DispatchBase): + itemsPerPage: int + page: int + total: int + + class PrimaryKeyModel(BaseModel): id: PrimaryKey diff --git a/src/dispatch/notification/models.py b/src/dispatch/notification/models.py index 442dde4bd20d..7dd3cce870d4 100644 --- a/src/dispatch/notification/models.py +++ b/src/dispatch/notification/models.py @@ -13,13 +13,13 @@ from dispatch.search_filter.models import SearchFilterRead, SearchFilterUpdate from dispatch.models import ( - DispatchBase, EvergreenBase, EvergreenMixin, TimeStampMixin, ProjectMixin, NameStr, PrimaryKey, + Pagination, ) @@ -85,6 +85,5 @@ class NotificationRead(NotificationBase): filters: Optional[List[SearchFilterRead]] -class NotificationPagination(DispatchBase): - total: int +class NotificationPagination(Pagination): items: List[NotificationRead] = [] diff --git a/src/dispatch/organization/models.py b/src/dispatch/organization/models.py index 51ad6bb613ba..7ecefc51aa18 100644 --- a/src/dispatch/organization/models.py +++ b/src/dispatch/organization/models.py @@ -10,7 +10,7 @@ from dispatch.database.core import Base -from dispatch.models import DispatchBase, NameStr, OrganizationSlug, PrimaryKey +from dispatch.models import DispatchBase, NameStr, OrganizationSlug, PrimaryKey, Pagination class Organization(Base): @@ -67,6 +67,5 @@ class OrganizationRead(OrganizationBase): slug: Optional[OrganizationSlug] -class OrganizationPagination(DispatchBase): - total: int +class OrganizationPagination(Pagination): items: List[OrganizationRead] = [] diff --git a/src/dispatch/participant/models.py b/src/dispatch/participant/models.py index dc6d94123db3..79b3034b5496 100644 --- a/src/dispatch/participant/models.py +++ b/src/dispatch/participant/models.py @@ -6,7 +6,7 @@ from sqlalchemy.ext.hybrid import hybrid_property from dispatch.database.core import Base -from dispatch.models import DispatchBase, PrimaryKey +from dispatch.models import DispatchBase, PrimaryKey, Pagination from dispatch.participant_role.models import ( ParticipantRoleCreate, ParticipantRoleRead, @@ -97,6 +97,5 @@ class ParticipantReadMinimal(ParticipantBase): individual: Optional[IndividualContactReadMinimal] -class ParticipantPagination(DispatchBase): - total: int +class ParticipantPagination(Pagination): items: List[ParticipantRead] = [] diff --git a/src/dispatch/participant_role/models.py b/src/dispatch/participant_role/models.py index dcef84774f7e..cca92d35986c 100644 --- a/src/dispatch/participant_role/models.py +++ b/src/dispatch/participant_role/models.py @@ -44,5 +44,4 @@ class ParticipantRoleReadMinimal(ParticipantRoleRead): class ParticipantRolePagination(ParticipantRoleBase): - total: int items: List[ParticipantRoleRead] = [] diff --git a/src/dispatch/plugin/models.py b/src/dispatch/plugin/models.py index e2aad1960dda..ef0af2ec3020 100644 --- a/src/dispatch/plugin/models.py +++ b/src/dispatch/plugin/models.py @@ -15,7 +15,7 @@ from dispatch.database.core import Base from dispatch.config import DISPATCH_ENCRYPTION_KEY -from dispatch.models import DispatchBase, ProjectMixin, PrimaryKey +from dispatch.models import DispatchBase, ProjectMixin, Pagination, PrimaryKey from dispatch.plugins.base import plugins from dispatch.project.models import ProjectRead @@ -190,11 +190,9 @@ class PluginMetadata(DispatchBase): metadata: List[KeyValue] = [] -class PluginPagination(DispatchBase): - total: int +class PluginPagination(Pagination): items: List[PluginRead] = [] -class PluginInstancePagination(DispatchBase): - total: int +class PluginInstancePagination(Pagination): items: List[PluginInstanceReadMinimal] = [] diff --git a/src/dispatch/project/models.py b/src/dispatch/project/models.py index 99e6cb8a2dad..3a93af9fbfe0 100644 --- a/src/dispatch/project/models.py +++ b/src/dispatch/project/models.py @@ -9,7 +9,7 @@ from sqlalchemy_utils import TSVectorType from dispatch.database.core import Base -from dispatch.models import DispatchBase, NameStr, PrimaryKey +from dispatch.models import DispatchBase, NameStr, PrimaryKey, Pagination from dispatch.organization.models import Organization, OrganizationRead @@ -68,6 +68,5 @@ class ProjectRead(ProjectBase): id: Optional[PrimaryKey] -class ProjectPagination(DispatchBase): - total: int +class ProjectPagination(Pagination): items: List[ProjectRead] = [] diff --git a/src/dispatch/report/models.py b/src/dispatch/report/models.py index 90b4b72ed4a8..6781b7706362 100644 --- a/src/dispatch/report/models.py +++ b/src/dispatch/report/models.py @@ -7,7 +7,7 @@ from sqlalchemy_utils import JSONType, TSVectorType from dispatch.database.core import Base -from dispatch.models import DispatchBase +from dispatch.models import DispatchBase, Pagination from .enums import ReportTypes @@ -55,8 +55,7 @@ class ReportRead(ReportBase): created_at: Optional[datetime] = None -class ReportPagination(ReportBase): - total: int +class ReportPagination(Pagination): items: List[ReportRead] = [] diff --git a/src/dispatch/search_filter/models.py b/src/dispatch/search_filter/models.py index 97a16d977ebc..e4811d3ea87c 100644 --- a/src/dispatch/search_filter/models.py +++ b/src/dispatch/search_filter/models.py @@ -12,7 +12,14 @@ from dispatch.auth.models import DispatchUser, UserRead from dispatch.database.core import Base from dispatch.enums import DispatchEnum -from dispatch.models import DispatchBase, NameStr, PrimaryKey, ProjectMixin, TimeStampMixin +from dispatch.models import ( + DispatchBase, + NameStr, + PrimaryKey, + ProjectMixin, + TimeStampMixin, + Pagination, +) from dispatch.project.models import ProjectRead @@ -83,6 +90,5 @@ class SearchFilterRead(SearchFilterBase): teams: Optional[List[TeamRead]] = [] -class SearchFilterPagination(DispatchBase): +class SearchFilterPagination(Pagination): items: List[SearchFilterRead] - total: int diff --git a/src/dispatch/service/models.py b/src/dispatch/service/models.py index 929005c02608..d1ea459f4fcb 100644 --- a/src/dispatch/service/models.py +++ b/src/dispatch/service/models.py @@ -9,7 +9,7 @@ from sqlalchemy_utils import TSVectorType from dispatch.database.core import Base -from dispatch.models import DispatchBase, TimeStampMixin, ProjectMixin +from dispatch.models import TimeStampMixin, ProjectMixin, Pagination from dispatch.project.models import ProjectRead from dispatch.search_filter.models import SearchFilterRead @@ -64,6 +64,5 @@ class ServiceRead(ServiceBase): updated_at: Optional[datetime] = None -class ServicePagination(DispatchBase): - total: int +class ServicePagination(Pagination): items: List[ServiceRead] = [] diff --git a/src/dispatch/signal/models.py b/src/dispatch/signal/models.py index 8bfb6ce99896..23dfd127e490 100644 --- a/src/dispatch/signal/models.py +++ b/src/dispatch/signal/models.py @@ -39,6 +39,7 @@ PrimaryKey, ProjectMixin, TimeStampMixin, + Pagination, ) from dispatch.workflow.models import WorkflowRead @@ -275,9 +276,8 @@ class SignalEngagementRead(SignalEngagementBase): id: PrimaryKey -class SignalEngagementPagination(DispatchBase): +class SignalEngagementPagination(Pagination): items: List[SignalEngagementRead] - total: int class SignalFilterCreate(SignalFilterBase): @@ -288,9 +288,8 @@ class SignalFilterRead(SignalFilterBase): id: PrimaryKey -class SignalFilterPagination(DispatchBase): +class SignalFilterPagination(Pagination): items: List[SignalFilterRead] - total: int class SignalBase(DispatchBase): @@ -351,9 +350,8 @@ class SignalReadMinimal(DispatchBase): created_at: Optional[datetime] = None -class SignalPagination(DispatchBase): +class SignalPagination(Pagination): items: List[SignalRead] - total: int class AdditionalMetadata(DispatchBase): @@ -384,6 +382,5 @@ class SignalInstanceRead(SignalInstanceBase): signal: SignalRead -class SignalInstancePagination(DispatchBase): +class SignalInstancePagination(Pagination): items: List[SignalInstanceRead] - total: int diff --git a/src/dispatch/tag/models.py b/src/dispatch/tag/models.py index d07abdf5d044..39c54f3a0cc7 100644 --- a/src/dispatch/tag/models.py +++ b/src/dispatch/tag/models.py @@ -7,7 +7,7 @@ from sqlalchemy_utils import TSVectorType from dispatch.database.core import Base -from dispatch.models import DispatchBase, TimeStampMixin, ProjectMixin, PrimaryKey +from dispatch.models import DispatchBase, TimeStampMixin, ProjectMixin, PrimaryKey, Pagination from dispatch.project.models import ProjectRead from dispatch.tag_type.models import TagTypeRead, TagTypeCreate, TagTypeUpdate @@ -61,6 +61,5 @@ class TagRead(TagBase): project: ProjectRead -class TagPagination(DispatchBase): +class TagPagination(Pagination): items: List[TagRead] - total: int diff --git a/src/dispatch/tag_type/models.py b/src/dispatch/tag_type/models.py index 7a000184bd8e..3d1675628f5f 100644 --- a/src/dispatch/tag_type/models.py +++ b/src/dispatch/tag_type/models.py @@ -7,7 +7,14 @@ from sqlalchemy_utils import TSVectorType from dispatch.database.core import Base -from dispatch.models import DispatchBase, NameStr, TimeStampMixin, ProjectMixin, PrimaryKey +from dispatch.models import ( + DispatchBase, + NameStr, + TimeStampMixin, + ProjectMixin, + PrimaryKey, + Pagination, +) from dispatch.project.models import ProjectRead @@ -40,6 +47,5 @@ class TagTypeRead(TagTypeBase): project: ProjectRead -class TagTypePagination(DispatchBase): +class TagTypePagination(Pagination): items: List[TagTypeRead] - total: int diff --git a/src/dispatch/task/models.py b/src/dispatch/task/models.py index f3b78dc5072e..e5798204075c 100644 --- a/src/dispatch/task/models.py +++ b/src/dispatch/task/models.py @@ -20,7 +20,7 @@ from dispatch.database.core import Base from dispatch.incident.models import IncidentReadMinimal -from dispatch.models import DispatchBase, ResourceBase, ResourceMixin, PrimaryKey +from dispatch.models import ResourceBase, ResourceMixin, PrimaryKey, Pagination from dispatch.participant.models import ParticipantRead, ParticipantUpdate from dispatch.project.models import ProjectRead @@ -123,6 +123,5 @@ class TaskRead(TaskBase): project: Optional[ProjectRead] -class TaskPagination(DispatchBase): - total: int +class TaskPagination(Pagination): items: List[TaskRead] = [] diff --git a/src/dispatch/team/models.py b/src/dispatch/team/models.py index d40929d41328..539c150cff96 100644 --- a/src/dispatch/team/models.py +++ b/src/dispatch/team/models.py @@ -13,12 +13,12 @@ from dispatch.models import ( ContactBase, ContactMixin, - DispatchBase, EvergreenBase, EvergreenMixin, NameStr, ProjectMixin, PrimaryKey, + Pagination, ) assoc_team_contact_incidents = Table( @@ -73,6 +73,5 @@ class TeamContactRead(TeamContactBase): updated_at: datetime -class TeamPagination(DispatchBase): - total: int +class TeamPagination(Pagination): items: List[TeamContactRead] = [] diff --git a/src/dispatch/term/models.py b/src/dispatch/term/models.py index 47c7db3fb48d..6094f3a11808 100644 --- a/src/dispatch/term/models.py +++ b/src/dispatch/term/models.py @@ -10,6 +10,7 @@ DispatchBase, ProjectMixin, PrimaryKey, + Pagination, ) from dispatch.definition.models import DefinitionRead from dispatch.project.models import ProjectRead @@ -50,6 +51,5 @@ class TermRead(TermBase): definitions: Optional[List[DefinitionRead]] = [] -class TermPagination(DispatchBase): - total: int +class TermPagination(Pagination): items: List[TermRead] = [] diff --git a/src/dispatch/workflow/models.py b/src/dispatch/workflow/models.py index e0a409e11acc..b29749b6ca7c 100644 --- a/src/dispatch/workflow/models.py +++ b/src/dispatch/workflow/models.py @@ -18,6 +18,7 @@ TimeStampMixin, ProjectMixin, PrimaryKey, + Pagination, ) from dispatch.participant.models import ParticipantRead from dispatch.plugin.models import PluginInstance, PluginInstanceRead @@ -147,8 +148,7 @@ def set_description(cls, v, values): return v -class WorkflowPagination(DispatchBase): - total: int +class WorkflowPagination(Pagination): items: List[WorkflowRead] = [] @@ -181,6 +181,5 @@ class WorkflowInstanceRead(WorkflowInstanceBase): creator: Optional[ParticipantRead] -class WorkflowInstancePagination(DispatchBase): - total: int +class WorkflowInstancePagination(Pagination): items: List[WorkflowInstanceRead] = []