package com.qiaoba.common.base.util;

import cn.hutool.core.convert.Convert;
import com.qiaoba.common.base.context.BaseContext;
import com.qiaoba.common.base.enums.DataBaseEnum;
import lombok.extern.slf4j.Slf4j;

/**
 * 数据库工具类
 *
 * @author ailanyin
 * @version 1.0
 * @since 2023/5/22 16:41
 */
@Slf4j
public class DatabaseUtil {

    /**
     * 根据数据库类型，处理find_in_set函数
     *
     * @param var1 参数1
     * @param var2 参数2
     * @return 处理后的sql
     */
    public static String handleFindInSet(Object var1, String var2) {
        String databaseType = BaseContext.getDatabaseType();
        log.debug("租户ID: [{}], 数据源类型: {}", BaseContext.getTenantId(), databaseType);
        String var = Convert.toStr(var1);
        if (DataBaseEnum.SQL_SERVER.getType().equals(databaseType)) {
            // charindex(',100,' , ',0,100,101,') <> 0
            return "charindex('," + var + ",' , ','+" + var2 + "+',') <> 0";
        } else if (DataBaseEnum.POSTGRE_SQL.getType().equals(databaseType)) {
            // (select position(',100,' in ',0,100,101,')) <> 0
            return "(select position('," + var + ",' in ','||" + var2 + "||',')) <> 0";
        }
        // find_in_set(100 , '0,100,101')
        return "find_in_set(" + var + " , " + var2 + ") <> 0";
    }
}
