Skip to content

Instantly share code, notes, and snippets.

Keybase proof

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:

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();
}
@f1xmAn
f1xmAn / filter.sql
Last active February 16, 2017 20:00
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 %}