I hereby claim:
- I am f1xman on github.
- I am f1xxman (https://keybase.io/f1xxman) on keybase.
- I have a public key ASA9UVd6jNrSG1GyNYkRLLTeiw4Mhiv4m9PPOvJK9h7DXQo
To claim this, I am signing this object:
I hereby claim:
To claim this, I am signing this object:
package com.github.f1xman.statefun; | |
import com.github.f1xman.statefun.util.KafkaClient; | |
import org.apache.flink.statefun.sdk.java.StatefulFunctionSpec; | |
import org.apache.flink.statefun.sdk.java.StatefulFunctions; | |
import org.junit.jupiter.api.BeforeAll; | |
import org.junit.jupiter.api.Test; | |
import org.junit.jupiter.api.TestInstance; | |
import org.testcontainers.containers.KafkaContainer; | |
import org.testcontainers.containers.Network; |
mvn archetype:generate \ | |
-DarchetypeGroupId=org.apache.flink \ | |
-DarchetypeArtifactId=statefun-quickstart \ | |
-DarchetypeVersion=2.2.0 |
public class Condition { | |
private Predicate<PersonSpec> predicate; | |
private String query; | |
private Map<String, Supplier> nameValueSuppliersMap; | |
public Condition(Predicate<PersonSpec> predicate, String query, Map<String, Supplier> nameValueSuppliersMap) { | |
this.predicate = predicate; | |
this.query = query; | |
this.nameValueSuppliersMap = nameValueSuppliersMap; |
PersonSpecBuilder.newSpec() | |
.setCity("Lviv") | |
.teenagers(); |
public interface PersonQueryBuilder extends QueryBuilder<Person> { | |
PersonQueryBuilder setCity(String city); | |
PersonQueryBuilder setGender(Gender gender); | |
PersonQueryBuilder unemployed(); | |
PersonQueryBuilder setAge(AgeRange ageRange); |
public interface QueryBuilder<T> { | |
QueryBuilder<Person> use(Session session); | |
TypedQuery<T> toLoadingQuery(int offset, int limit); | |
TypedQuery<Long> toCountingQuery(); | |
} |
@Override | |
public List<Person> findByFilter(PersonSpec personSpec, int offset, int limit) { | |
return PersonHibernateQueryBuilder.fromSpec(personSpec) | |
.use(session()) | |
.toLoadingQuery(offset, limit) | |
.getResultList(); | |
} |
public List<Person> findJobSeekersIn(String city, int offset, int limit) { | |
return PersonHibernateQueryBuilder.newQuery() | |
.setCity(city) | |
.setAge(new AgeRange(18, 55)) | |
.unemployed() | |
.use(session()) | |
.toLoadingQuery(offset, limit) | |
.getResultList(); | |
} |
SELECT p | |
FROM person p WHERE | |
p.deleted = FALSE | |
{% if age != NULL %} | |
AND p.age = :age | |
{% endif %} | |
{% if gender != NULL %} | |
AND p.gender = :gender | |
{% endif %} | |
{% if city != NULL %} |