Skip to content

MongoQuery may return inaccurate results after its parameters changed #9

Description

@bvandewe

A MongoQuery may return an inaccurate empty list after multiple requests with different payloads.

For example, referring to the following query, sending a first query Q1 with a "report_type:A" parameter will return a list of - for example - 3 ReportDto's. A second query Q2 with a "report_type:B" parameter will return an empty list, which is correct in the test.
A third query Q3 with a "report_type:A" parameter (so the same query as Q1!) will now return an empty list - which is wrong as it should still be 3...

class ReportsByTypeQuery(Query[OperationResult[ReportDto]]):
    """Represents the query used to get an account by its owner id"""

    report_type: ReportType

    def __init__(self, report_type: ReportType):
        self.report_type = report_type


class ReportsByTypeQueryHandler(
    QueryHandler[ReportsByTypeQuery, OperationResult[ReportDto]]
):
    """Represents the service used to handle ReportsByTypeQuery instances"""

    def __init__(self, repository: QueryableRepository[ReportDto, str]):
        self.repository = repository

    repository: QueryableRepository[ReportDto, str]

    async def handle_async(
        self, query: ReportsByTypeQuery
    ) -> OperationResult[ReportDto]:
        # q = await self.repository.query_async()
        # result = q.where(lambda r: r.type == query.report_type.value).to_list()
        # return self.ok(result)
        return self.ok((await self.repository.query_async()).where(lambda r: r.type == query.report_type.value).to_list())

I'm using the neuroglia.data.infrastructure.mongo.mongo_repository module... Thanks!

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions