/
PersonDataFetcher.java
44 lines (37 loc) · 1.51 KB
/
PersonDataFetcher.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
package fr.jufab.graphql.datafetcher;
import fr.jufab.database.dto.Address;
import fr.jufab.database.dto.Gender;
import fr.jufab.database.dto.Person;
import fr.jufab.database.repositories.PersonRepository;
import graphql.language.IntValue;
import graphql.language.ObjectValue;
import graphql.schema.DataFetcher;
import java.util.List;
/**
* @author jufab
* @version 1.0
*/
public class PersonDataFetcher {
PersonRepository personRepository;
public PersonDataFetcher(PersonRepository personRepository) {
this.personRepository = personRepository;
}
public DataFetcher<List<Person>> getPersons() {
return environment -> personRepository.getPersons().collectList().get();
}
public DataFetcher<Person> getPersonById() {
return environment -> personRepository.getPersonById(Integer.parseInt(environment.getArgument("id").toString())).get();
}
public DataFetcher<List<Person>> getPersonsByFirstName() {
return environment -> personRepository.getPersonsByFirstName(
environment.getArgument("firstname")).collectList().get();
}
public DataFetcher<Person> createPersonWithAddress() {
return environment -> this.personRepository.createPerson(
new Person(environment.getArgument("firstname"), environment.getArgument("lastname"),
environment.getArgument("age"),
new Address(environment.getArgument("street"), environment.getArgument("zipCode"),
environment.getArgument("city")),
Gender.valueOf(environment.getArgument("gender")))).get();
}
}