#set($BaseEntity = ['createDept', 'createBy', 'createTime', 'updateBy', 'updateTime'])
#set($ModuleName = $moduleName.substring(0, 1).toUpperCase() + $moduleName.substring(1))
/**
 * namespace ${ModuleName}
 *
 * backend api module: "${ModuleName}"
 */
namespace ${ModuleName} {
    /** ${businessname} */
    type ${BusinessName} = Common.CommonRecord<{
        #foreach($column in $columns)#if(!$BaseEntity.contains($column.javaField))
        /** $column.columnComment */
        $column.javaField:#if($column.javaField.indexOf("id") != -1 || $column.javaField.indexOf("Id") != -1) CommonType.IdType; #elseif($column.javaType == 'Long' || $column.javaType == 'Integer' || $column.javaType == 'Double' || $column.javaType == 'Float' || $column.javaType == 'BigDecimal') number; #elseif($column.javaType == 'Boolean') boolean; #else string; #end
        #end#end
    }>;

    /** ${businessname} search params */
    type ${BusinessName}SearchParams = CommonType.RecordNullable<
      Pick<
        Api.${ModuleName}.${BusinessName},
        #foreach($column in $columns)
            #if($column.query && $column.queryType != 'BETWEEN')
        | '${column.javaField}'
            #end
        #end
      > &
        Api.Common.CommonSearchParams
    >;

    /** ${businessname} operate params */
    type ${BusinessName}OperateParams = CommonType.RecordNullable<
      Pick<
        Api.${ModuleName}.${BusinessName},
        #foreach($column in $columns)
            #if($column.insert || $column.edit)
        | '${column.javaField}'
            #end
        #end
      >
    >;

    /** ${businessname} list */
    type ${BusinessName}List = Api.Common.PaginatingQueryRecord<${BusinessName}>;
}
