fix-device-models-users.pl 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  1. #!/usr/bin/perl
  2. #
  3. # Copyright (C) Roman Dmitiriev, rnd@rajven.ru
  4. #
  5. #Скрипт нужен для переноса юзеровских девайсов в системные при нахождении юзеровскийх моделей/вендоров в новой системной таблице
  6. use FindBin '$Bin';
  7. use lib "$Bin/";
  8. use Data::Dumper;
  9. use Rstat::config;
  10. use Rstat::main;
  11. use Rstat::mysql;
  12. use Rstat::net_utils;
  13. use strict;
  14. use warnings;
  15. print "Stage 0: Upgrade DB\n";
  16. my @nSQL=read_file("last-vendors-models.sql");
  17. foreach my $row (@nSQL) {
  18. next if ($row!~/^REPLACE/);
  19. do_sql($dbh,$row);
  20. }
  21. print "Stage 1: Devices\n";
  22. #new models
  23. my @dev_models = get_records_sql($dbh,"SELECT * FROM device_models WHERE id>=10000");
  24. foreach my $row (@dev_models) {
  25. print "Dev: $row->{id} $row->{model_name} =>";
  26. #search hardcoded models with some name
  27. my $model = get_record_sql($dbh,"SELECT * FROM device_models WHERE id <>".$row->{id}." AND LOWER(model_name)='".lc(trim($row->{model_name}))."'");
  28. if ($model) {
  29. print "... found id: $model->{id}. Migrated.";
  30. do_sql($dbh,"DELETE FROM device_models WHERE id=".$row->{id});
  31. do_sql($dbh,"UPDATE devices SET device_model_id=".$model->{id}." WHERE device_model_id=".$row->{id});
  32. do_sql($dbh,"UDPATE User_auth SET device_model_id=".$model->{id}." WHERE device_model_id=".$row->{id});
  33. }
  34. }
  35. print "Done!\n";
  36. print "Stage 2: Vendors\n";
  37. #new vendors
  38. my @dev_vendors = get_records_sql($dbh,"SELECT * FROM vendors WHERE id>=10000");
  39. foreach my $row (@dev_vendors) {
  40. print "Dev: $row->{id} $row->{name} =>";
  41. #search hardcoded vendors with some name
  42. my $vendor = get_record_sql($dbh,"SELECT * FROM vendors WHERE id <>".$row->{id}." AND LOWER(name)='".lc(trim($row->{name}))."'");
  43. if ($vendor) {
  44. print "... found id: $vendor->{id}. Migrated.";
  45. do_sql($dbh,"DELETE FROM vendors WHERE id=".$row->{id});
  46. do_sql($dbh,"UPDATE device_models SET vendor_id=".$vendor->{id}." WHERE vendor_id=".$row->{id});
  47. do_sql($dbh,"UDPATE devices SET vendor_id=".$vendor->{id}." WHERE vendor_id=".$row->{id});
  48. }
  49. }
  50. print "Done!\n";
  51. exit;