/** * 本机开发 MySQL 的连接串 —— 全仓唯一的一份默认值。 * * 「开发机上跑着哪个 MySQL、用什么口令连」是一条规则,只能写一次。以前每个脚本各写一份 * `process.env.DATABASE_URL || 'mysql://root:<猜的口令>@...'`,猜错了也没人发现(因为没人跑), * 于是真链路脚本集体腐烂。 * * 这个实例由 `docker-compose.yml` 的 mysql 服务提供,`tools/scripts/mysql-dev.js` 用本函数解析出 * 的口令去 provision 它 —— 容器口令和代码口令是同一个字面量,不会再分叉。 * * 部署环境一律由 `DATABASE_URL` 覆盖:`process.env.DATABASE_URL || devMysqlUrl('idearun')`。 * 本函数是纯的,不读 `process.env`(保持 @drama/db「不读环境变量」的边界纪律)。 */ /** 本机开发 MySQL 的 server 端点(不含库名)。 */ const DEV_MYSQL_SERVER = 'mysql://root:idearun_dev_pw@127.0.0.1:3306' /** * @param {string} database 库名。建库 / 删库这类管理连接传一个已存在的库名即可(如 `idearun`)。 * @returns {string} 形如 mysql://root:***@127.0.0.1:3306/ */ export function devMysqlUrl(database) { if (!/^[A-Za-z0-9_]+$/.test(String(database || ''))) { throw new Error(`devMysqlUrl: invalid database name: ${database}`) } return `${DEV_MYSQL_SERVER}/${database}` }