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

io.army.criteria.postgre.PostgreStatement Maven / Gradle / Ivy

There is a newer version: 0.6.6
Show newest version
package io.army.criteria.postgre;

import io.army.criteria.DialectStatement;
import io.army.criteria.Expression;
import io.army.criteria.Item;
import io.army.criteria.impl.Postgres;

import javax.annotation.Nullable;

import io.army.mapping.MappingType;

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

public interface PostgreStatement extends DialectStatement {


    interface _FuncColumnDefinitionSpaceClause {


        FuncColumnDefCommaClause space(String name, MappingType type);

    }


    interface _FuncColumnDefinitionParensClause {

        R parens(Consumer<_FuncColumnDefinitionSpaceClause> consumer);
    }


    interface _FuncColumnDefinitionAsClause extends _AsClause<_FuncColumnDefinitionParensClause> {

    }


    interface _PostgreDynamicJoinCrossClause extends _DynamicJoinClause,
            _DynamicCrossJoinClause {

    }


    interface _PostgreCrossClause extends _CrossJoinModifierClause> {

    }

    interface _PostgreJoinNestedClause extends _JoinNestedClause<_NestedLeftParenSpec, R> {

    }

    interface _PostgreCrossNestedClause extends _CrossJoinNestedClause<_NestedLeftParenSpec, R> {

    }

    interface _PostgreFromNestedClause extends _FromNestedClause<_NestedLeftParenSpec, R> {

    }

    interface _PostgreUsingNestedClause extends _UsingNestedClause<_NestedLeftParenSpec, R> {

    }

    interface _PostgreDynamicNestedClause
            extends _DynamicTabularNestedClause<_NestedLeftParenSpec, R> {

    }

    interface _PostgreUsingClause extends _UsingModifierClause> {

    }

    interface _PostgreFromUndoneFuncClause
            extends _FromModifierUndoneFunctionClause<_FuncColumnDefinitionAsClause> {


    }

    interface _PostgreUsingUndoneFuncClause
            extends _UsingModifierUndoneFunctionClause<_FuncColumnDefinitionAsClause> {


    }

    interface _PostgreJoinUndoneFuncClause
            extends _JoinModifierUndoneFunctionClause<_FuncColumnDefinitionAsClause> {


    }

    interface _PostgreCrossUndoneFuncClause
            extends _CrossModifierUndoneFunctionClause<_FuncColumnDefinitionAsClause> {

    }

    interface _PostgreNestedLeftParenUndoneFuncClause
            extends _NestedLeftParenModifierUndoneFunctionClause<_FuncColumnDefinitionAsClause> {

    }

    interface _PostgreTabularSpaceUndoneFuncClause
            extends _DynamicTabularModifierUndoneFunctionClause<_FuncColumnDefinitionAsClause> {

    }


    interface _RepeatableClause {

        R repeatable(Expression seed);

        R repeatable(Supplier supplier);

        R repeatable(Function valueOperator, Number seedValue);

         R repeatable(Function valueOperator, Supplier supplier);

        R repeatable(Function valueOperator, Function function, String keyName);

        R ifRepeatable(Supplier supplier);

         R ifRepeatable(Function valueOperator, Supplier supplier);

        R ifRepeatable(Function valueOperator, Function function, String keyName);


    }

    interface _StaticTableSampleClause {

        R tableSample(Expression method);

        R tableSample(BiFunction, Expression, Expression> method,
                      BiFunction valueOperator, Expression argument);

         R tableSample(BiFunction, E, Expression> method,
                          BiFunction valueOperator, Supplier supplier);

        R tableSample(BiFunction, Object, Expression> method,
                      BiFunction valueOperator, Function function,
                      String keyName);

        R ifTableSample(Supplier supplier); //TODO add function

         R ifTableSample(BiFunction, E, Expression> method,
                            BiFunction valueOperator, Supplier supplier);

        R ifTableSample(BiFunction, Object, Expression> method,
                        BiFunction valueOperator, Function function,
                        String keyName);

    }


    interface _TableSampleClause extends _StaticTableSampleClause {

    }



    interface _PostgreNestedJoinClause
            extends _JoinModifierClause<_NestedTableSampleOnSpec, _AsClause<_NestedParensOnSpec>>,
            _PostgreJoinUndoneFuncClause<_NestedOnSpec>,
            _PostgreCrossClause<_NestedTableSampleCrossSpec, _NestedParensCrossSpec>,
            _PostgreCrossUndoneFuncClause<_NestedJoinSpec>,
            _JoinCteClause<_NestedOnSpec>,
            _CrossJoinCteClause<_NestedJoinSpec>,
            _PostgreJoinNestedClause<_NestedOnSpec>,
            _PostgreCrossNestedClause<_NestedJoinSpec>,
            _PostgreDynamicJoinCrossClause<_NestedJoinSpec> {

    }


    interface _NestedJoinSpec extends _PostgreNestedJoinClause, _RightParenClause {

    }

    interface _NestedOnSpec extends _OnClause<_NestedJoinSpec>, _NestedJoinSpec {

    }

    interface _NestedParensOnSpec extends _OptionalParensStringClause<_NestedOnSpec>, _NestedOnSpec {

    }

    interface _NestedParensCrossSpec extends _OptionalParensStringClause<_NestedJoinSpec>,
            _NestedJoinSpec {

    }

    interface _NestedRepeatableOnClause extends _RepeatableClause<_NestedOnSpec>,
            _NestedOnSpec {

    }

    interface _NestedTableSampleOnSpec extends _TableSampleClause<_NestedRepeatableOnClause>,
            _NestedOnSpec {

    }


    interface _NestedRepeatableCrossClause extends _RepeatableClause<_NestedJoinSpec>,
            _NestedJoinSpec {

    }

    interface _NestedTableSampleCrossSpec
            extends _TableSampleClause<_NestedRepeatableCrossClause>, _NestedJoinSpec {

    }

    interface _NestedRepeatableJoinClause extends _RepeatableClause<_PostgreNestedJoinClause>,
            _PostgreNestedJoinClause {

    }

    interface _NestedTableSampleJoinSpec
            extends _TableSampleClause<_NestedRepeatableJoinClause>, _PostgreNestedJoinClause {

    }

    interface _NestedParensJoinSpec extends _OptionalParensStringClause<_PostgreNestedJoinClause>,
            _PostgreNestedJoinClause {

    }

    interface _NestedLeftParenSpec
            extends _NestedLeftParenModifierClause<_NestedTableSampleJoinSpec, _AsClause<_NestedParensJoinSpec>>,
            _PostgreNestedLeftParenUndoneFuncClause<_PostgreNestedJoinClause>,
            _LeftParenCteClause<_PostgreNestedJoinClause>,
            _LeftParenNestedClause<_NestedLeftParenSpec<_PostgreNestedJoinClause>, _PostgreNestedJoinClause> {
    }


    interface _DynamicRepeatableOnSpec extends _RepeatableClause<_OnClause<_DynamicJoinSpec>>, _OnClause<_DynamicJoinSpec> {

    }

    interface _DynamicTableSampleOnSpec extends _TableSampleClause<_DynamicRepeatableOnSpec>,
            _OnClause<_DynamicJoinSpec> {

    }


    interface _DynamicJoinSpec
            extends _JoinModifierClause<_DynamicTableSampleOnSpec, _AsParensOnClause<_DynamicJoinSpec>>,
            _PostgreJoinUndoneFuncClause<_OnClause<_DynamicJoinSpec>>,
            _CrossJoinModifierClause<_DynamicTableSampleJoinSpec, _AsClause<_DynamicParensJoinSpec>>,
            _JoinCteClause<_OnClause<_DynamicJoinSpec>>,
            _CrossJoinCteClause<_DynamicJoinSpec>,
            _PostgreCrossUndoneFuncClause<_DynamicJoinSpec>,
            _PostgreJoinNestedClause<_OnClause<_DynamicJoinSpec>>,
            _PostgreCrossNestedClause<_DynamicJoinSpec>,
            _PostgreDynamicJoinCrossClause<_DynamicJoinSpec> {

    }

    interface _DynamicParensJoinSpec extends _OptionalParensStringClause<_DynamicJoinSpec>, _DynamicJoinSpec {

    }

    interface _DynamicTableRepeatableJoinSpec extends _RepeatableClause<_DynamicJoinSpec>, _DynamicJoinSpec {

    }

    interface _DynamicTableSampleJoinSpec extends _TableSampleClause<_DynamicTableRepeatableJoinSpec>,
            _DynamicJoinSpec {

    }


    interface _PostgreFromClause extends _FromModifierClause> {

    }


    interface _PostgreDynamicWithClause extends _DynamicWithClause {

    }


    interface _PostgreDynamicCteAsClause extends _DynamicCteAsClause {

        R as(@Nullable Postgres.WordMaterialized modifier, Function function);

    }


}