package com.codvision.db.utils;

import cn.hutool.core.util.StrUtil;
import com.codvision.db.enums.DbTypeEnum;

/**
 * 数据库工具
 *
 * @author lingee
 * @date 2023/10/12
 */
public class DbUtil {


    public static DbTypeEnum getDatabaseType(String url) {
        int startIndex = url.indexOf(":") + 1;
        int endIndex = url.indexOf("://");

        String type = url.substring(startIndex, endIndex).toLowerCase();
        return DbTypeEnum.resolve(type);
    }

    /**
     * 获取数据库连接中的数据库
     *
     * @param url 数据库连接
     * @return 数据库
     */
    public static String getDatabase(String url) {
        String database = "";
        if (StrUtil.isNotBlank(url)) {
            int begin = url.lastIndexOf("/");
            int end = url.lastIndexOf("?");
            if (begin > -1 && end > -1 && end > begin) {
                database = url.substring(begin + 1, end);
            } else {
                if (begin > -1) {
                    database = url.substring(begin + 1);
                }
            }
        }
        return database;
    }

    /**
     * 获取数据连接中的端口
     *
     * @param url 数据库连接
     * @return 端口号
     */
    public static String getPort(String url) {
        String port = "";
        if (StrUtil.isNotBlank(url)) {
            int begin = url.indexOf("//");
            int end = url.lastIndexOf("/");
            if (begin > -1 && end > -1 && end > begin) {
                String hostStr = url.substring(begin + 2, end + 1);
                int index = hostStr.indexOf(":");
                int indexE = hostStr.indexOf("/");
                if (index > 0) {
                    port = hostStr.substring(index + 1, indexE);
                } else {
                    port = hostStr;
                }

            }
        }
        return port;
    }

    /**
     * 获取数据库连接中的主机地址
     *
     * @param url 数据库连接
     * @return 主机地址
     */
    public static String getHost(String url) {
        String host = "";
        if (StrUtil.isNotBlank(url)) {
            int begin = url.indexOf("//");
            int end = url.lastIndexOf("/");
            if (begin > -1 && end > -1 && end > begin) {
                String hostStr = url.substring(begin + 2, end);
                int index = hostStr.indexOf(":");
                if (index > 0) {
                    host = hostStr.substring(0, index);
                } else {
                    host = hostStr;
                }

            }
        }
        return host;
    }
}
