apply-instance-scope-columns.js 1.2 KB

12345678910111213141516171819202122232425262728293031323334
  1. const mysql = require('mysql2/promise')
  2. const DB = process.argv[2] || 'fs_tenant_cs1'
  3. const cfg = {
  4. host: 'cq-cdb-8fjmemkb.sql.tencentcdb.com', port: 27220,
  5. user: 'root', password: 'Ylrz_1q2w3e4r5t6y', database: DB, charset: 'utf8mb4', multipleStatements: true
  6. }
  7. async function colExists(c, table, col) {
  8. const [r] = await c.query(
  9. 'SELECT COUNT(*) cnt FROM information_schema.COLUMNS WHERE TABLE_SCHEMA=DATABASE() AND TABLE_NAME=? AND COLUMN_NAME=?',
  10. [table, col]
  11. )
  12. return r[0].cnt > 0
  13. }
  14. async function main() {
  15. const c = await mysql.createConnection(cfg)
  16. console.log('Patch instance scope columns on', DB)
  17. const alters = [
  18. ['dept_id', "ADD COLUMN dept_id BIGINT NULL AFTER channel_type"],
  19. ['company_user_id', "ADD COLUMN company_user_id BIGINT NULL AFTER dept_id"],
  20. ['qw_user_id', "ADD COLUMN qw_user_id BIGINT NULL AFTER company_user_id"],
  21. ['wx_account_id', "ADD COLUMN wx_account_id BIGINT NULL AFTER qw_user_id"]
  22. ]
  23. for (const [col, sql] of alters) {
  24. if (!(await colExists(c, 'lobster_workflow_instance', col))) {
  25. await c.query(`ALTER TABLE lobster_workflow_instance ${sql}`)
  26. console.log(' added', col)
  27. }
  28. }
  29. await c.end()
  30. console.log('Done')
  31. }
  32. main().catch(e => { console.error(e); process.exit(1) })