| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152 |
- /**
- * Ensure lobster_user_segment table exists (tenant DB).
- * Usage: node scripts/repair-lobster-segment-schema.js [dbName]
- */
- const mysql = require('mysql2/promise')
- const DB_CFG = {
- host: 'cq-cdb-8fjmemkb.sql.tencentcdb.com',
- port: 27220,
- user: 'root',
- password: 'Ylrz_1q2w3e4r5t6y',
- charset: 'utf8mb4'
- }
- const TARGET_DB = process.argv[2] || 'fs_tenant_cs1'
- const CREATE_SQL = `
- CREATE TABLE IF NOT EXISTS lobster_user_segment (
- id bigint NOT NULL AUTO_INCREMENT,
- company_id bigint NOT NULL COMMENT 'company id',
- segment_code varchar(64) NOT NULL COMMENT 'segment code',
- segment_name varchar(128) DEFAULT NULL COMMENT 'segment name',
- description varchar(500) DEFAULT NULL COMMENT 'description',
- strategy_config text COMMENT 'strategy config JSON',
- deleted tinyint DEFAULT 0 COMMENT 'deleted flag',
- create_time datetime DEFAULT CURRENT_TIMESTAMP,
- update_time datetime DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
- PRIMARY KEY (id),
- UNIQUE KEY uk_company_segment (company_id, segment_code)
- ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='lobster user segment definitions'
- `
- async function main() {
- const conn = await mysql.createConnection({ ...DB_CFG, database: TARGET_DB })
- console.log('DB:', TARGET_DB)
- const [before] = await conn.query(`SHOW TABLES LIKE 'lobster_user_segment'`)
- if (before.length) {
- console.log('lobster_user_segment already exists')
- } else {
- await conn.query(CREATE_SQL)
- console.log('created lobster_user_segment')
- }
- const [cols] = await conn.query(
- `SELECT COLUMN_NAME FROM INFORMATION_SCHEMA.COLUMNS
- WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'lobster_user_segment'
- ORDER BY ORDINAL_POSITION`
- )
- console.log('columns:', cols.map(r => r.COLUMN_NAME).join(', '))
- await conn.end()
- }
- main().catch(e => { console.error(e); process.exit(1) })
|