|
@@ -1,51 +1,96 @@
|
|
|
begin;
|
|
|
+DO $$
|
|
|
+begin
|
|
|
|
|
|
-- Создаем таблицу званий
|
|
|
-create table ranks (id serial primary key, name varchar(32));
|
|
|
+create table if not exists ranks (id serial primary key, name varchar(32));
|
|
|
|
|
|
-- Создаем таблицу пользователей
|
|
|
-create table users (id serial primary key, name varchar(64), rank_id integer);
|
|
|
-
|
|
|
--- Привязываем users(rank_id) -> ranks(id)
|
|
|
-alter table users add foreign key(rank_id) references ranks(id);
|
|
|
+create table if not exists users (id serial primary key, name varchar(64), rank_id integer references ranks(id));
|
|
|
|
|
|
-- Заполняем звания
|
|
|
-insert into ranks(name) values ('Рядовой');
|
|
|
-insert into ranks(name) values ('Ефрейтор');
|
|
|
-insert into ranks(name) values ('Младший сержант');
|
|
|
-insert into ranks(name) values ('Сержант');
|
|
|
-insert into ranks(name) values ('Старший сержант');
|
|
|
-insert into ranks(name) values ('Старшина');
|
|
|
-insert into ranks(name) values ('Прапорщик');
|
|
|
-insert into ranks(name) values ('Старший прапорщик');
|
|
|
-insert into ranks(name) values ('Младший лейтенант');
|
|
|
-insert into ranks(name) values ('Лейтенант');
|
|
|
-insert into ranks(name) values ('Старший лейтенант');
|
|
|
-insert into ranks(name) values ('Капитан');
|
|
|
-insert into ranks(name) values ('Майор');
|
|
|
-insert into ranks(name) values ('Подполковник');
|
|
|
-insert into ranks(name) values ('Полковник');
|
|
|
+if exists(select from ranks limit 1) then
|
|
|
+ raise notice 'Ranks values exist';
|
|
|
+else
|
|
|
+ insert into ranks(name) values ('Рядовой');
|
|
|
+ insert into ranks(name) values ('Ефрейтор');
|
|
|
+ insert into ranks(name) values ('Младший сержант');
|
|
|
+ insert into ranks(name) values ('Сержант');
|
|
|
+ insert into ranks(name) values ('Старший сержант');
|
|
|
+ insert into ranks(name) values ('Старшина');
|
|
|
+ insert into ranks(name) values ('Прапорщик');
|
|
|
+ insert into ranks(name) values ('Старший прапорщик');
|
|
|
+ insert into ranks(name) values ('Младший лейтенант');
|
|
|
+ insert into ranks(name) values ('Лейтенант');
|
|
|
+ insert into ranks(name) values ('Старший лейтенант');
|
|
|
+ insert into ranks(name) values ('Капитан');
|
|
|
+ insert into ranks(name) values ('Майор');
|
|
|
+ insert into ranks(name) values ('Подполковник');
|
|
|
+ insert into ranks(name) values ('Полковник');
|
|
|
insert into ranks(name) values ('Генерал майор');
|
|
|
-insert into ranks(name) values ('Генерал лейтенант');
|
|
|
-insert into ranks(name) values ('Генерал полковник');
|
|
|
-insert into ranks(name) values ('Генерал армии');
|
|
|
-insert into ranks(name) values ('Маршал России');
|
|
|
+ insert into ranks(name) values ('Генерал лейтенант');
|
|
|
+ insert into ranks(name) values ('Генерал полковник');
|
|
|
+ insert into ranks(name) values ('Генерал армии');
|
|
|
+ insert into ranks(name) values ('Маршал России');
|
|
|
+end if;
|
|
|
|
|
|
-- Обновляем username(varchar) -> user_id(integer) в measurement_batch
|
|
|
-alter table measurement_batch rename column username to user_id;
|
|
|
-alter table measurement_batch alter column user_id type integer using null;
|
|
|
+if exists(select from information_schema.columns where table_name='measurement_batch' and column_name='user_id') then
|
|
|
+ raise notice 'user_id column already exists in table measurement_batch';
|
|
|
+else
|
|
|
+ alter table measurement_batch rename column username to user_id;
|
|
|
+ delete from measurement_params;
|
|
|
+ delete from measurement_batch;
|
|
|
+ alter table measurement_batch alter column user_id type integer using null;
|
|
|
+end if;
|
|
|
|
|
|
-- Привязываем measurement_batch(user_id) -> users(id)
|
|
|
-alter table measurement_batch add foreign key(user_id) references users(id);
|
|
|
+if exists(select from information_schema.referential_constraints where constraint_name = 'measurement_batch_user_id_fkey') then
|
|
|
+ raise notice 'Foreign key measurement_batch(user_id) -> users(id) exists';
|
|
|
+else
|
|
|
+ alter table measurement_batch add foreign key(user_id) references users(id);
|
|
|
+end if;
|
|
|
|
|
|
-- Заполняем тестовые данные:
|
|
|
-- -- Пользователь
|
|
|
-insert into users(name, rank_id) values ('Левитан Всеволод Романович', (select id from ranks order by id desc limit 1));
|
|
|
+if exists(select from users limit 1) then
|
|
|
+ raise notice 'Test user exists';
|
|
|
+else
|
|
|
+ insert into users(name, rank_id) values ('Левитан Всеволод Романович', (select id from ranks order by id desc limit 1));
|
|
|
+end if;
|
|
|
+
|
|
|
+END $$;
|
|
|
+
|
|
|
+commit;
|
|
|
+
|
|
|
+begin;
|
|
|
+
|
|
|
+DO $$
|
|
|
+begin
|
|
|
+
|
|
|
-- -- Измерение
|
|
|
-insert into measurement_batch(start_period, user_id, pos_x, pos_y) values (now(), (select id from users limit 1), 69.00, 42.00);
|
|
|
+if exists(select id from measurement_batch limit 1) then
|
|
|
+ raise notice 'Test batch exists';
|
|
|
+else
|
|
|
+ insert into measurement_batch(start_period, user_id, pos_x, pos_y) values (now(), (select id from users limit 1), 69.00, 42.00);
|
|
|
+end if;
|
|
|
+
|
|
|
+END$$;
|
|
|
|
|
|
commit;
|
|
|
|
|
|
+begin;
|
|
|
+
|
|
|
+do $$
|
|
|
+begin
|
|
|
|
|
|
--- Проверяем
|
|
|
-select batch.id, batch.start_period, concat(rnk.name, ' ', usr.name), batch.pos_x, batch.pos_y from measurement_batch batch join users usr on batch.user_id = usr.id join ranks rnk on usr.rank_id = rnk.id;
|
|
|
+-- Данные измерения
|
|
|
+if exists(select id from measurement_params limit 1) then
|
|
|
+ raise notice 'Test params exists';
|
|
|
+else
|
|
|
+ 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);
|
|
|
+end if;
|
|
|
+
|
|
|
+end $$;
|
|
|
+
|
|
|
+commit;
|