Skip to content

Relation refactoring: Split Repository interface into different interfaces #1356

@dhmlau

Description

@dhmlau

Description / Steps to reproduce / Feature proposal

See #1194 (comment) for background. This tasks aims to break up the Repository interface into different interfaces based on the persistence function type and refactor the repository interfaces which extend from it to use those interfaces via a Mixin.

Acceptance Criteria

  • Split Repository interface into different interfaces based on the persistence function type i.e. LookupRepository interface to have all the Retrieval methods, WriteRepository (I'm sure there is a better name), would have the create methodsMutationRepository might have the update and related methods (this might fall under the previous one), and DestroyRepository for deletes. A good list from @raymondfeng:
  1. QueryRepository - read-based operations (find, findOne, count, ...)
  2. MutationRepository - write-based operations (create, update, delete, ...)
  3. CrudRepository (QueryRepository + MutationRepository)
  4. EntityRepository (CrudRepository + findById, updateById, deleteById, ...)
  • Explore the use of a Mixin for a smart way of sharing the implementation bits from the different repositories (for e.g. how can HasManyEntityCrudRepository inherit the needed CRUD methods from the interfaces mentioned above?).

  • tests / docs

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions