package com.yeejoin.amos.boot.module.jg.biz.edit.factory;

import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import com.yeejoin.amos.boot.biz.common.annotation.FieldDisplayDefine;
import com.yeejoin.amos.boot.biz.common.annotation.Group;
import com.yeejoin.amos.boot.module.jg.api.dto.FieldChangeMeta;

import java.lang.reflect.Field;

public interface ColumnDiff {

    boolean supports(Class<?> type);

    <T> FieldChangeMeta handleWithWrapper(FieldDisplayDefine fieldDisplayDefine, Object oldValue, Object newValue, Field field, Group group, String changeId, TableField tableField, UpdateWrapper<T> wrapper);

    FieldChangeMeta handleNoWrapper(FieldDisplayDefine fieldDisplayDefine, Object oldValue, Object newValue, Field field, Group group, String changeId);

}
