Dividing `repository->find` method in smaller pieces

This way, concrete implementations can reimplement its parts to get more control over the data that is used to build the resource.