All Downloads are FREE. Search and download functionalities are using the official Maven repository.

io.zero88.jooqx.adapter.SQLCollectorPart Maven / Gradle / Ivy

package io.zero88.jooqx.adapter;

import java.util.function.BiFunction;
import java.util.function.Function;

import org.jooq.DSLContext;
import org.jooq.Record;
import org.jooq.TableLike;

import lombok.AccessLevel;
import lombok.Getter;
import lombok.NonNull;
import lombok.RequiredArgsConstructor;
import lombok.experimental.Accessors;

/**
 * SQL collector part that helps creating collector in {@link RowConverterStrategy#createCollector(Function)}
 * 

* This collector part will be init in SQLResultAdapter * * @param The jOOQ record type * @param The output object type * @see RowConverterStrategy * @see SQLResultAdapter */ @Accessors(fluent = true) @RequiredArgsConstructor public class SQLCollectorPart { @Getter(value = AccessLevel.PROTECTED) private final BiFunction, R> provider; @Getter private final Function converter; public R toRecord(@NonNull DSLContext dsl, @NonNull TableLike queryTable) { return provider.apply(dsl, queryTable); } public static final class IdentityCollectorPart extends SQLCollectorPart { public IdentityCollectorPart(BiFunction, R> provider) { super(provider, Function.identity()); } public SQLCollectorPart andThen(Function converter) { return new SQLCollectorPart<>(provider(), converter); } } }





© 2015 - 2025 Weber Informatics LLC | Privacy Policy