import { Singleton, Container, Scope, Inject } from "typescript-ioc";

@Singleton
export class Config {

    /**
      * 获取默认租户
      * @returns 
      */
    static getDefaultTenant(): string {
        return 'kt_ec'
    }

    /**
     * 获取默认命名空间
     * @returns 
     */
    static getDefaultNamespace(): string {
        return 'kt_ec'
    }

    /**
     * 获取pular地址
     * @returns 
     */
    static getPulsarUrl() {
        return this.getEnv('KT_EC_PULSAR_URL')
    }

    /**
     * 获取订阅id
     */
    static getSubscriptionId() {
        return this.getEnv('KT_EC_SUBSCRIPTION_ID') || 'subscriptionId'
    }


    /***************redis配置 start***************/
    /**
     * 获取事件redis锁host
     */
    static getRedisLockHost() {
        return Config.base64Decode(this.getEnv('KT_EC_REDIS_LOCK_HOST'))
    }

    /**
     * 获取事件redis锁port
     */
    static getRedisLockPort() {
        return Config.base64Decode(this.getEnv('KT_EC_REDIS_LOCK_PORT'))
    }

    /**
     * 获取事件redis锁password
     */
    static getRedisLockPassword() {
        return Config.base64Decode(this.getEnv('KT_EC_REDIS_LOCK_PASSWORD'))
    }

    /**
     * 获取事件redis锁database
     */
    static getRedisLockDatabase() {
        return Config.base64Decode(this.getEnv('KT_EC_REDIS_LOCK_DATABASE'))
    }
    /***************redis配置 end***************/

    /**
    * 获取环境变量，环境变量由从注册中心写入
    * @param key 环境变量名称
    */
    static getEnv(key) {
        return process.env[key];
    }

    /**
     * 
     * @param base64String base64解码
     * @returns 
     */
    static base64Decode(base64String) {
        return Buffer.from(base64String, 'base64').toString('utf8');
    }
}