ApplyAdminAiModelModalities.java 2.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. import java.sql.Connection;
  2. import java.sql.DriverManager;
  3. import java.sql.ResultSet;
  4. import java.sql.Statement;
  5. /** Apply admin_ai_model.input_modalities migration to master DB. */
  6. public class ApplyAdminAiModelModalities {
  7. private static final String HOST = "cq-cdb-8fjmemkb.sql.tencentcdb.com:27220";
  8. private static final String USER = "root";
  9. private static final String PASS = "Ylrz_1q2w3e4r5t6y";
  10. public static void main(String[] args) throws Exception {
  11. Class.forName("com.mysql.cj.jdbc.Driver");
  12. String db = args.length > 0 ? args[0] : "ylrz_saas";
  13. String url = "jdbc:mysql://" + HOST + "/" + db
  14. + "?useSSL=false&serverTimezone=GMT%2B8&characterEncoding=utf8";
  15. try (Connection c = DriverManager.getConnection(url, USER, PASS);
  16. Statement st = c.createStatement()) {
  17. if (!columnExists(st, db, "admin_ai_model", "input_modalities")) {
  18. st.executeUpdate("ALTER TABLE admin_ai_model ADD COLUMN input_modalities VARCHAR(100) "
  19. + "DEFAULT 'text' COMMENT 'text,vision,audio comma-separated' AFTER status");
  20. System.out.println("[OK] added column input_modalities");
  21. } else {
  22. System.out.println("[SKIP] column input_modalities exists");
  23. }
  24. int v = st.executeUpdate("UPDATE admin_ai_model SET input_modalities='text,vision' WHERE ("
  25. + "LOWER(model_identifier) LIKE '%vision%' OR LOWER(model_identifier) LIKE '%-vl%' "
  26. + "OR LOWER(model_identifier) LIKE 'vl-%' OR LOWER(model_identifier) LIKE 'qwen-vl%' "
  27. + "OR LOWER(model_identifier) LIKE 'hunyuan-vision%')");
  28. System.out.println("[OK] vision models updated: " + v);
  29. int t = st.executeUpdate("UPDATE admin_ai_model SET input_modalities='text' "
  30. + "WHERE input_modalities IS NULL OR input_modalities=''");
  31. System.out.println("[OK] text default updated: " + t);
  32. System.out.println("Done " + db);
  33. }
  34. }
  35. private static boolean columnExists(Statement st, String db, String table, String column) throws Exception {
  36. ResultSet rs = st.executeQuery("SELECT COUNT(*) FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_SCHEMA='"
  37. + db.replace("'", "''") + "' AND TABLE_NAME='" + table + "' AND COLUMN_NAME='" + column + "'");
  38. rs.next();
  39. return rs.getInt(1) > 0;
  40. }
  41. }