package com.iailab.module.infra.convert.codegen;
|
|
import com.iailab.framework.common.util.collection.CollectionUtils;
|
import com.iailab.framework.common.util.object.BeanUtils;
|
import com.iailab.module.infra.controller.admin.codegen.vo.CodegenDetailRespVO;
|
import com.iailab.module.infra.controller.admin.codegen.vo.CodegenPreviewRespVO;
|
import com.iailab.module.infra.controller.admin.codegen.vo.column.CodegenColumnRespVO;
|
import com.iailab.module.infra.controller.admin.codegen.vo.table.CodegenTableRespVO;
|
import com.iailab.module.infra.dal.dataobject.codegen.CodegenColumnDO;
|
import com.iailab.module.infra.dal.dataobject.codegen.CodegenTableDO;
|
import com.baomidou.mybatisplus.generator.config.po.TableField;
|
import com.baomidou.mybatisplus.generator.config.po.TableInfo;
|
import org.apache.ibatis.type.JdbcType;
|
import org.mapstruct.Mapper;
|
import org.mapstruct.Mapping;
|
import org.mapstruct.Mappings;
|
import org.mapstruct.Named;
|
import org.mapstruct.factory.Mappers;
|
|
import java.util.List;
|
import java.util.Map;
|
|
@Mapper
|
public interface CodegenConvert {
|
|
CodegenConvert INSTANCE = Mappers.getMapper(CodegenConvert.class);
|
|
// ========== TableInfo 相关 ==========
|
|
@Mappings({
|
@Mapping(source = "name", target = "tableName"),
|
@Mapping(source = "comment", target = "tableComment"),
|
})
|
CodegenTableDO convert(TableInfo bean);
|
|
List<CodegenColumnDO> convertList(List<TableField> list);
|
|
@Mappings({
|
@Mapping(source = "name", target = "columnName"),
|
@Mapping(source = "metaInfo.jdbcType", target = "dataType", qualifiedByName = "getDataType"),
|
@Mapping(source = "comment", target = "columnComment"),
|
@Mapping(source = "metaInfo.nullable", target = "nullable"),
|
@Mapping(source = "keyFlag", target = "primaryKey"),
|
@Mapping(source = "columnType.type", target = "javaType"),
|
@Mapping(source = "propertyName", target = "javaField"),
|
})
|
CodegenColumnDO convert(TableField bean);
|
|
@Named("getDataType")
|
default String getDataType(JdbcType jdbcType) {
|
return jdbcType.name();
|
}
|
|
// ========== 其它 ==========
|
|
default CodegenDetailRespVO convert(CodegenTableDO table, List<CodegenColumnDO> columns) {
|
CodegenDetailRespVO respVO = new CodegenDetailRespVO();
|
respVO.setTable(BeanUtils.toBean(table, CodegenTableRespVO.class));
|
respVO.setColumns(BeanUtils.toBean(columns, CodegenColumnRespVO.class));
|
return respVO;
|
}
|
|
default List<CodegenPreviewRespVO> convert(Map<String, String> codes) {
|
return CollectionUtils.convertList(codes.entrySet(),
|
entry -> new CodegenPreviewRespVO().setFilePath(entry.getKey()).setCode(entry.getValue()));
|
}
|
|
}
|