Projekt

Obecné

Profil

« Předchozí | Další » 

Revize 6636acc9

Přidáno uživatelem Pavel Fidransky před více než 4 roky(ů)

re #44 add DB migration engine

Zobrazit rozdíly:

server/init.sql
1
SET NAMES utf8mb4;
2

  
3
-- -----------------------------------------------------
4
-- Table end_user
5
-- -----------------------------------------------------
6
DROP TABLE IF EXISTS end_user;
7
CREATE TABLE end_user (
8
  id BIGINT NOT NULL AUTO_INCREMENT,
9
  first_name VARCHAR(45) NOT NULL,
10
  last_name VARCHAR(45) NOT NULL,
11
  no_vacations FLOAT NOT NULL,
12
  no_sick_days INT,
13
  taken_sick_days INT NOT NULL,
14
  alert DATETIME,
15
  email VARCHAR(100) NOT NULL,
16
  photo TEXT,
17
  creation_date DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
18
  user_role VARCHAR(8) NOT NULL,
19
  status VARCHAR(8) NOT NULL,
20
  PRIMARY KEY (id),
21
  CONSTRAINT check_taken_sick_days CHECK (taken_sick_days >= 0)
22
);
23

  
24
-- -----------------------------------------------------
25
-- Table vacation_day
26
-- -----------------------------------------------------
27
DROP TABLE IF EXISTS vacation_day;
28
CREATE TABLE vacation_day (
29
  id BIGINT NOT NULL AUTO_INCREMENT,
30
  vacation_date DATE NOT NULL,
31
  time_from TIME,
32
  time_to TIME,
33
  creation_date DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
34
  status VARCHAR(8) NOT NULL,
35
  vacation_type VARCHAR(8) NOT NULL,
36
  user_id BIGINT NOT NULL,
37
  PRIMARY KEY (id),
38
  INDEX fk_vacation_day_end_user (user_id ASC),
39
  CONSTRAINT fk_vacation_day_end_user FOREIGN KEY (user_id)
40
    REFERENCES end_user (id)
41
    ON DELETE CASCADE ON UPDATE CASCADE,
42
  CONSTRAINT check_time CHECK (time_from < time_to)
43
);
44

  
45
-- -----------------------------------------------------
46
-- Table Default_Settings
47
-- -----------------------------------------------------
48
DROP TABLE IF EXISTS default_settings;
49
CREATE TABLE default_settings (
50
  id BIGINT NOT NULL AUTO_INCREMENT,
51
  no_sick_days INT NOT NULL,
52
  alert DATETIME NOT NULL,
53
  creation_date DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
54
  PRIMARY KEY (id),
55
  CONSTRAINT check_no_sick_days CHECK (no_sick_days >= 0)
56
);
57

  
58
DELIMITER $$
59
DROP PROCEDURE IF EXISTS GetUserId $$
60
CREATE PROCEDURE GetUserId(
61
  IN in_id BIGINT,
62
  OUT out_id BIGINT,
63
  OUT out_first_name VARCHAR(45),
64
  OUT out_last_name VARCHAR(45),
65
  OUT out_no_vacations FLOAT,
66
  OUT out_no_sick_days INT,
67
  OUT out_taken_sick_days INT,
68
  OUT out_alert DATETIME,
69
  OUT out_token TEXT,
70
  OUT out_email VARCHAR(100),
71
  OUT out_photo TEXT,
72
  OUT out_creation_date DATETIME,
73
  OUT out_role VARCHAR(8),
74
  OUT out_status VARCHAR(8))
75
BEGIN
76
  DECLARE sickDaysCount INT;
77
  DECLARE notification DATETIME;
78

  
79
  SELECT no_sick_days, alert INTO sickDaysCount, notification FROM default_settings ORDER BY id DESC LIMIT 1;
80
  SELECT id, first_name, last_name, no_vacations, IFNULL(no_sick_days, sickDaysCount), taken_sick_days, IFNULL(alert, notification), token, email, photo, creation_date, user_role, status
81
     INTO out_id, out_first_name, out_last_name, out_no_vacations, out_no_sick_days, out_taken_sick_days, out_alert, out_token, out_email, out_photo, out_creation_date, out_role, out_status
82
     FROM end_user
83
     WHERE id=in_id;
84
END $$
85

  
86
DROP PROCEDURE IF EXISTS GetUserToken $$
87
CREATE PROCEDURE GetUserToken(
88
  IN in_token TEXT,
89
  OUT out_id BIGINT,
90
  OUT out_first_name VARCHAR(45),
91
  OUT out_last_name VARCHAR(45),
92
  OUT out_no_vacations FLOAT,
93
  OUT out_no_sick_days INT,
94
  OUT out_taken_sick_days INT,
95
  OUT out_alert DATETIME,
96
  OUT out_token TEXT,
97
  OUT out_email VARCHAR(100),
98
  OUT out_photo TEXT,
99
  OUT out_creation_date DATETIME,
100
  OUT out_role VARCHAR(8),
101
  OUT out_status VARCHAR(8))
102
BEGIN
103
  DECLARE sickDaysCount INT;
104
  DECLARE notification DATETIME;
105

  
106
  SELECT no_sick_days, alert INTO sickDaysCount, notification FROM default_settings ORDER BY id DESC LIMIT 1;
107
  SELECT id, first_name, last_name, no_vacations, IFNULL(no_sick_days, sickDaysCount), taken_sick_days, IFNULL(alert, notification), token, email, photo, creation_date, user_role, status
108
     INTO out_id, out_first_name, out_last_name, out_no_vacations, out_no_sick_days, out_taken_sick_days, out_alert, out_token, out_email, out_photo, out_creation_date, out_role, out_status
109
     FROM end_user
110
     WHERE token=in_token;
111
END $$
112

  
113
DELIMITER ;
114

  
115
-- -----------------------------------------------------
116
-- Insert table end_user
117
-- -----------------------------------------------------
118
INSERT INTO end_user (first_name, last_name, no_vacations, no_sick_days, taken_sick_days, alert, email, photo,
119
                      user_role, status)
120
VALUES ('admin', 'admin', 0, NULL, 0, NULL, 'testuser@yoso.fi',
121
        'https://st2.depositphotos.com/9223672/12056/v/950/depositphotos_120568236-stock-illustration-male-face-avatar-logo-template.jpg',
122
        'EMPLOYER', 'ACCEPTED');
123

  
124
-- -----------------------------------------------------
125
-- Insert table vacation_day
126
-- -----------------------------------------------------
127
-- INSERT INTO vacation_day (vacation_date, time_from, time_to, user_id, status_id, type_id) VALUES ();
128

  
129
-- -----------------------------------------------------
130
-- Insert table default_settings
131
-- -----------------------------------------------------
132
INSERT INTO default_settings (no_sick_days, alert) VALUES (5, '2019-12-01 12:00:00.000');
server/pom.xml
62 62
            <version>1.5</version>
63 63
        </dependency>
64 64

  
65
        <dependency>
66
            <groupId>org.flywaydb</groupId>
67
            <artifactId>flyway-core</artifactId>
68
            <version>${flyway.version}</version>
69
        </dependency>
65 70

  
66 71
        <!-- DATABASE -->
67 72
        <dependency>
server/src/main/resources/application.properties
12 12
spring.security.oauth2.client.registration.google.client-id=${OAUTH2_GOOGLE_CLIENT_ID}
13 13
spring.security.oauth2.client.registration.google.client-secret=${OAUTH2_GOOGLE_CLIENT_SECRET}
14 14

  
15
spring.flyway.baseline-on-migrate=true
16
spring.flyway.baseline-version=1.0.0
17
spring.flyway.baseline-description=init
18

  
15 19
#comma-separated list of allowed domains, leave empty for all
16 20
ymanager.oauth2.client.google.allowed-domains=${OAUTH2_GOOGLE_ALLOWED_DOMAINS}
17 21

  
server/src/main/resources/db/migration/V1_0_0__init.sql
1
SET NAMES utf8mb4;
2

  
3
-- -----------------------------------------------------
4
-- Table end_user
5
-- -----------------------------------------------------
6
DROP TABLE IF EXISTS end_user;
7
CREATE TABLE end_user (
8
  id BIGINT NOT NULL AUTO_INCREMENT,
9
  first_name VARCHAR(45) NOT NULL,
10
  last_name VARCHAR(45) NOT NULL,
11
  no_vacations FLOAT NOT NULL,
12
  no_sick_days INT,
13
  taken_sick_days INT NOT NULL,
14
  alert DATETIME,
15
  email VARCHAR(100) NOT NULL,
16
  photo TEXT,
17
  creation_date DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
18
  user_role VARCHAR(8) NOT NULL,
19
  status VARCHAR(8) NOT NULL,
20
  PRIMARY KEY (id),
21
  CONSTRAINT check_taken_sick_days CHECK (taken_sick_days >= 0)
22
);
23

  
24
-- -----------------------------------------------------
25
-- Table vacation_day
26
-- -----------------------------------------------------
27
DROP TABLE IF EXISTS vacation_day;
28
CREATE TABLE vacation_day (
29
  id BIGINT NOT NULL AUTO_INCREMENT,
30
  vacation_date DATE NOT NULL,
31
  time_from TIME,
32
  time_to TIME,
33
  creation_date DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
34
  status VARCHAR(8) NOT NULL,
35
  vacation_type VARCHAR(8) NOT NULL,
36
  user_id BIGINT NOT NULL,
37
  PRIMARY KEY (id),
38
  INDEX fk_vacation_day_end_user (user_id ASC),
39
  CONSTRAINT fk_vacation_day_end_user FOREIGN KEY (user_id)
40
    REFERENCES end_user (id)
41
    ON DELETE CASCADE ON UPDATE CASCADE,
42
  CONSTRAINT check_time CHECK (time_from < time_to)
43
);
44

  
45
-- -----------------------------------------------------
46
-- Table Default_Settings
47
-- -----------------------------------------------------
48
DROP TABLE IF EXISTS default_settings;
49
CREATE TABLE default_settings (
50
  id BIGINT NOT NULL AUTO_INCREMENT,
51
  no_sick_days INT NOT NULL,
52
  alert DATETIME NOT NULL,
53
  creation_date DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
54
  PRIMARY KEY (id),
55
  CONSTRAINT check_no_sick_days CHECK (no_sick_days >= 0)
56
);
57

  
58
DELIMITER $$
59
DROP PROCEDURE IF EXISTS GetUserId $$
60
CREATE PROCEDURE GetUserId(
61
  IN in_id BIGINT,
62
  OUT out_id BIGINT,
63
  OUT out_first_name VARCHAR(45),
64
  OUT out_last_name VARCHAR(45),
65
  OUT out_no_vacations FLOAT,
66
  OUT out_no_sick_days INT,
67
  OUT out_taken_sick_days INT,
68
  OUT out_alert DATETIME,
69
  OUT out_token TEXT,
70
  OUT out_email VARCHAR(100),
71
  OUT out_photo TEXT,
72
  OUT out_creation_date DATETIME,
73
  OUT out_role VARCHAR(8),
74
  OUT out_status VARCHAR(8))
75
BEGIN
76
  DECLARE sickDaysCount INT;
77
  DECLARE notification DATETIME;
78

  
79
  SELECT no_sick_days, alert INTO sickDaysCount, notification FROM default_settings ORDER BY id DESC LIMIT 1;
80
  SELECT id, first_name, last_name, no_vacations, IFNULL(no_sick_days, sickDaysCount), taken_sick_days, IFNULL(alert, notification), token, email, photo, creation_date, user_role, status
81
     INTO out_id, out_first_name, out_last_name, out_no_vacations, out_no_sick_days, out_taken_sick_days, out_alert, out_token, out_email, out_photo, out_creation_date, out_role, out_status
82
     FROM end_user
83
     WHERE id=in_id;
84
END $$
85

  
86
DROP PROCEDURE IF EXISTS GetUserToken $$
87
CREATE PROCEDURE GetUserToken(
88
  IN in_token TEXT,
89
  OUT out_id BIGINT,
90
  OUT out_first_name VARCHAR(45),
91
  OUT out_last_name VARCHAR(45),
92
  OUT out_no_vacations FLOAT,
93
  OUT out_no_sick_days INT,
94
  OUT out_taken_sick_days INT,
95
  OUT out_alert DATETIME,
96
  OUT out_token TEXT,
97
  OUT out_email VARCHAR(100),
98
  OUT out_photo TEXT,
99
  OUT out_creation_date DATETIME,
100
  OUT out_role VARCHAR(8),
101
  OUT out_status VARCHAR(8))
102
BEGIN
103
  DECLARE sickDaysCount INT;
104
  DECLARE notification DATETIME;
105

  
106
  SELECT no_sick_days, alert INTO sickDaysCount, notification FROM default_settings ORDER BY id DESC LIMIT 1;
107
  SELECT id, first_name, last_name, no_vacations, IFNULL(no_sick_days, sickDaysCount), taken_sick_days, IFNULL(alert, notification), token, email, photo, creation_date, user_role, status
108
     INTO out_id, out_first_name, out_last_name, out_no_vacations, out_no_sick_days, out_taken_sick_days, out_alert, out_token, out_email, out_photo, out_creation_date, out_role, out_status
109
     FROM end_user
110
     WHERE token=in_token;
111
END $$
112

  
113
DELIMITER ;
114

  
115
-- -----------------------------------------------------
116
-- Insert table end_user
117
-- -----------------------------------------------------
118
INSERT INTO end_user (first_name, last_name, no_vacations, no_sick_days, taken_sick_days, alert, email, photo,
119
                      user_role, status)
120
VALUES ('admin', 'admin', 0, NULL, 0, NULL, 'testuser@yoso.fi',
121
        'https://st2.depositphotos.com/9223672/12056/v/950/depositphotos_120568236-stock-illustration-male-face-avatar-logo-template.jpg',
122
        'EMPLOYER', 'ACCEPTED');
123

  
124
-- -----------------------------------------------------
125
-- Insert table vacation_day
126
-- -----------------------------------------------------
127
-- INSERT INTO vacation_day (vacation_date, time_from, time_to, user_id, status_id, type_id) VALUES ();
128

  
129
-- -----------------------------------------------------
130
-- Insert table default_settings
131
-- -----------------------------------------------------
132
INSERT INTO default_settings (no_sick_days, alert) VALUES (5, '2019-12-01 12:00:00.000');

Také k dispozici: Unified diff