1.sql 3.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596
  1. begin;
  2. DO $$
  3. begin
  4. -- Создаем таблицу званий
  5. create table if not exists ranks (id serial primary key, name varchar(32));
  6. -- Создаем таблицу пользователей
  7. create table if not exists users (id serial primary key, name varchar(64), rank_id integer references ranks(id));
  8. -- Заполняем звания
  9. if exists(select from ranks limit 1) then
  10. raise notice 'Ranks values exist';
  11. else
  12. insert into ranks(name) values ('Рядовой');
  13. insert into ranks(name) values ('Ефрейтор');
  14. insert into ranks(name) values ('Младший сержант');
  15. insert into ranks(name) values ('Сержант');
  16. insert into ranks(name) values ('Старший сержант');
  17. insert into ranks(name) values ('Старшина');
  18. insert into ranks(name) values ('Прапорщик');
  19. insert into ranks(name) values ('Старший прапорщик');
  20. insert into ranks(name) values ('Младший лейтенант');
  21. insert into ranks(name) values ('Лейтенант');
  22. insert into ranks(name) values ('Старший лейтенант');
  23. insert into ranks(name) values ('Капитан');
  24. insert into ranks(name) values ('Майор');
  25. insert into ranks(name) values ('Подполковник');
  26. insert into ranks(name) values ('Полковник');
  27. insert into ranks(name) values ('Генерал майор');
  28. insert into ranks(name) values ('Генерал лейтенант');
  29. insert into ranks(name) values ('Генерал полковник');
  30. insert into ranks(name) values ('Генерал армии');
  31. insert into ranks(name) values ('Маршал России');
  32. end if;
  33. -- Обновляем username(varchar) -> user_id(integer) в measurement_batch
  34. if exists(select from information_schema.columns where table_name='measurement_batch' and column_name='user_id') then
  35. raise notice 'user_id column already exists in table measurement_batch';
  36. else
  37. alter table measurement_batch rename column username to user_id;
  38. delete from measurement_params;
  39. delete from measurement_batch;
  40. alter table measurement_batch alter column user_id type integer using null;
  41. end if;
  42. -- Привязываем measurement_batch(user_id) -> users(id)
  43. if exists(select from information_schema.referential_constraints where constraint_name = 'measurement_batch_user_id_fkey') then
  44. raise notice 'Foreign key measurement_batch(user_id) -> users(id) exists';
  45. else
  46. alter table measurement_batch add foreign key(user_id) references users(id);
  47. end if;
  48. -- Заполняем тестовые данные:
  49. -- -- Пользователь
  50. if exists(select from users limit 1) then
  51. raise notice 'Test user exists';
  52. else
  53. insert into users(name, rank_id) values ('Левитан Всеволод Романович', (select id from ranks order by id desc limit 1));
  54. end if;
  55. END $$;
  56. commit;
  57. begin;
  58. DO $$
  59. begin
  60. -- -- Измерение
  61. if exists(select id from measurement_batch limit 1) then
  62. raise notice 'Test batch exists';
  63. else
  64. insert into measurement_batch(start_period, user_id, pos_x, pos_y) values (now(), (select id from users limit 1), 69.00, 42.00);
  65. end if;
  66. END$$;
  67. commit;
  68. begin;
  69. do $$
  70. begin
  71. -- Данные измерения
  72. if exists(select id from measurement_params limit 1) then
  73. raise notice 'Test params exists';
  74. else
  75. insert into measurement_params(measurement_type_id, measurement_batch_id, height, temperature, pressure, wind_speed, wind_direction, bullet_speed) values ((select id from measurement_types limit 1), (select id from measurement_batch limit 1), 100, 15, 750, 0, 0, 0);
  76. end if;
  77. end $$;
  78. commit;