Azure / azure-cosmosdb-java

Java Async SDK for SQL API of Azure Cosmos DB
MIT License
54 stars 61 forks source link

Adds support to Repository (A mapper who does a query dynamically) #45

Closed otaviojava closed 6 years ago

otaviojava commented 6 years ago

:bomb: This PR requires: https://github.com/Azure/azure-cosmosdb-java/pull/44

This PR adds supports to a Repository interface; this interface allows a Java developer creates a query without handle about its implementation.

Given this entity:


@Entity(databaseName = "AzureSampleFamilyDB")
public class Person {

    private String id;

    private String name;

    private Integer age;

}

Going beyond the Mapper, a Java developer can create its who interface with queries.

public interface PersonRepository extends Repository<Person> {

    @Query("SELECT * FROM Person WHERE Person.name = @name")
    Observable<List<Person>> findByName(@Param("name") String name);
}
MappingManager manager = MappingManager.of(client);
PersonRepository repository = manager.repository(PersonRepository.class);
Observable<List<Person>> result = repository.findByName("Ada Lovelace");
moderakh commented 6 years ago

@otaviojava Thanks for the PR and sorry for the delayed update on this.

We decided to have support for object mapping outside of SDK as part of Spring project (https://github.com/Microsoft/spring-data-cosmosdb). So we have to reject the PR.