@zenweb/tenant
Version:
Zenweb Tenant module
53 lines (52 loc) • 1.19 kB
TypeScript
import { PoolOptions, PoolClusterOptions } from 'mysql2';
import { Context } from "@zenweb/core";
import { MySQLOption } from '@zenweb/mysql';
/**
* 租户配置描述
*/
export interface Tenant {
/**
* 所属数据库服务器名称
*/
server: string;
/**
* 所属数据库名称
*/
database: string;
}
/**
* 数据库连接池配置
*/
export interface TenantPools {
/**
* @param server 所属数据库服务器名称,对应 `Tenant.server`
*/
[server: string]: {
/**
* 主数据库(读写) - 必须设置
*/
MASTER: PoolOptions;
/**
* 从库(只读) - 可选
*/
SLAVES?: PoolOptions[];
};
}
/**
* 租户数据库服务器配置
*/
export interface TenantOption extends Pick<MySQLOption, 'bindQuery'> {
/**
* 取得租户配置
* - 如果不能找到请使用 `ctx.fail` 抛出异常,或者返回一个默认租户?
*/
tenantGetter: (ctx: Context) => Tenant | Promise<Tenant>;
/**
* 数据库连接池配置
*/
pools: TenantPools;
/**
* 集群设置
*/
cluster?: PoolClusterOptions;
}