# Author: Junjun
# Date: 2025/7/16

from enum import Enum


class ConnectType(Enum):
    sqlalchemy = ('sqlalchemy')
    py_driver = ('py_driver')

    def __init__(self, type_name):
        self.type_name = type_name


class DB(Enum):
    mysql = ('mysql', '`', '`', ConnectType.sqlalchemy)
    sqlServer = ('sqlServer', '[', ']', ConnectType.sqlalchemy)
    pg = ('pg', '"', '"', ConnectType.sqlalchemy)
    excel = ('excel', '"', '"', ConnectType.sqlalchemy)
    oracle = ('oracle', '"', '"', ConnectType.sqlalchemy)
    ck = ('ck', '"', '"', ConnectType.sqlalchemy)
    dm = ('dm', '"', '"', ConnectType.py_driver)
    doris = ('doris', '`', '`', ConnectType.py_driver)
    redshift = ('redshift', '"', '"', ConnectType.py_driver)

    def __init__(self, type, prefix, suffix, connect_type: ConnectType):
        self.type = type
        self.prefix = prefix
        self.suffix = suffix
        self.connect_type = connect_type

    @classmethod
    def get_db(cls, type):
        for db in cls:
            if db.type == type:
                return db
        raise ValueError(f"Invalid db type: {type}")
