repair-lobster-segment-schema.js 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  1. /**
  2. * Ensure lobster_user_segment table exists (tenant DB).
  3. * Usage: node scripts/repair-lobster-segment-schema.js [dbName]
  4. */
  5. const mysql = require('mysql2/promise')
  6. const DB_CFG = {
  7. host: 'cq-cdb-8fjmemkb.sql.tencentcdb.com',
  8. port: 27220,
  9. user: 'root',
  10. password: 'Ylrz_1q2w3e4r5t6y',
  11. charset: 'utf8mb4'
  12. }
  13. const TARGET_DB = process.argv[2] || 'fs_tenant_cs1'
  14. const CREATE_SQL = `
  15. CREATE TABLE IF NOT EXISTS lobster_user_segment (
  16. id bigint NOT NULL AUTO_INCREMENT,
  17. company_id bigint NOT NULL COMMENT 'company id',
  18. segment_code varchar(64) NOT NULL COMMENT 'segment code',
  19. segment_name varchar(128) DEFAULT NULL COMMENT 'segment name',
  20. description varchar(500) DEFAULT NULL COMMENT 'description',
  21. strategy_config text COMMENT 'strategy config JSON',
  22. deleted tinyint DEFAULT 0 COMMENT 'deleted flag',
  23. create_time datetime DEFAULT CURRENT_TIMESTAMP,
  24. update_time datetime DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  25. PRIMARY KEY (id),
  26. UNIQUE KEY uk_company_segment (company_id, segment_code)
  27. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='lobster user segment definitions'
  28. `
  29. async function main() {
  30. const conn = await mysql.createConnection({ ...DB_CFG, database: TARGET_DB })
  31. console.log('DB:', TARGET_DB)
  32. const [before] = await conn.query(`SHOW TABLES LIKE 'lobster_user_segment'`)
  33. if (before.length) {
  34. console.log('lobster_user_segment already exists')
  35. } else {
  36. await conn.query(CREATE_SQL)
  37. console.log('created lobster_user_segment')
  38. }
  39. const [cols] = await conn.query(
  40. `SELECT COLUMN_NAME FROM INFORMATION_SCHEMA.COLUMNS
  41. WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'lobster_user_segment'
  42. ORDER BY ORDINAL_POSITION`
  43. )
  44. console.log('columns:', cols.map(r => r.COLUMN_NAME).join(', '))
  45. await conn.end()
  46. }
  47. main().catch(e => { console.error(e); process.exit(1) })