package com.pictc.annotations.datalog;

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

/**
 * @author 张福财
 * @date 2025年8月26日 上午9:37:23
 * @Description: 关联关系
 */
@Target({ElementType.METHOD, ElementType.FIELD})
@Retention(RetentionPolicy.RUNTIME)
@Inherited
public @interface LogJoin {
	
   /**
	* @Description: 业务名称
	* @return String 返回类型
	*/
	String name();
	
	/**
	 * @Description: 关联对象
	 * @return Class<?> 返回类型
	 */
	Class<?> target();
	
	/**
	 * @Description: 关联类型
	 * @return JoinType 返回类型
	 */
	JoinType type();
	
	/**
	 * @Description: 级联类型：DEL(删除)、UPD(修改)、FULL(全部);
	 * @return JoinType 返回类型
	 */
	JoinCaseType caseType() default JoinCaseType.FULL;
	
	/**
	 * @Description: 关联列
	 * @return DataLogJoinColumn[] 返回类型
	 */
	LogJoinColumn[] columns() default {};
	
	/**
	 * @Description: 数据来源：默认通过target配置的表名去关联查询；如果sourceType = TQ 时配置查询ID
	 * @return String 返回类型
	 */
	String source() default "";
	
	/**
	 * @Description: TODO(这里用一句话描述这个方法的作用)
	 * @return
	 * @return QJoinSource 返回类型
	 */
	SourceType sourceType() default SourceType.TABLE;
	

}
