package com.yanzuoguang.dao;

import com.yanzuoguang.util.helper.StringHelper;

import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

/**
 * 途比达列明映射
 */
@Retention(RetentionPolicy.RUNTIME)
@Target({ElementType.FIELD})
public @interface SqlFieldAnnotation {

    /**
     * Sql参数名称,默认等于当前字段
     *
     * @return
     */
    String name() default StringHelper.EMPTY;

    /**
     * Sql前台输入参数名称,默认等于当前字段
     *
     * @return
     */
    String[] input() default {};

    /**
     * 是否必须输入,当必须输入时,则该字段关联的sql语句为必须输入的参数
     *
     * @return
     */
    boolean require() default false;

    /**
     * 字段代码片段,关联到 {FIELD}
     *
     * @return
     */
    String[] field() default {};

    /**
     * inner代码片段,关联到 {INNER}
     *
     * @return
     */
    String[] inner() default {};

    /**
     * 条件代码片段,关联到 {INNER}
     *
     * @return
     */
    String[] where() default {};

    /**
     * 统计代码片段,关联到 {GROUP}
     *
     * @return
     */
    String[] group() default {};

    /**
     * 统计代码片段,关联到 {ORDER}
     *
     * @return
     */
    String[] order() default {};

    /**
     * 统计代码片段,关联到 {LIMIT}
     *
     * @return
     */
    String[] limit() default {};

    /**
     * 包含的代码片段
     *
     * @return
     */
    String[] codes() default {};
}