Skip to content

Commit 4bc5be3

Browse files
committed
Enable Flyway and add initial migration
1 parent 1b630c9 commit 4bc5be3

File tree

3 files changed

+82
-3
lines changed

3 files changed

+82
-3
lines changed

src/main/java/org/openpodcastapi/opa/security/RefreshTokenEntity.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@
1212
@NoArgsConstructor
1313
@AllArgsConstructor
1414
@Builder
15+
@Table(name = "refresh_tokens")
1516
public class RefreshTokenEntity {
1617
@Id
1718
@Generated

src/main/resources/application.yaml

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -19,10 +19,9 @@ spring:
1919
flyway:
2020
user: "${POSTGRES_USER}"
2121
password: "${POSTGRES_PASSWORD}"
22-
schemas: "${POSTGRES_DB}"
23-
locations: filesystem:db/migration
22+
schemas: public
2423
url: "jdbc:postgresql://${POSTGRES_HOST}:${POSTGRES_PORT}/${POSTGRES_DB}"
25-
enabled: false
24+
enabled: true
2625
data:
2726
redis:
2827
host: "${REDIS_HOST}"
Lines changed: 79 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,79 @@
1+
CREATE TABLE refresh_tokens
2+
(
3+
id BIGINT GENERATED BY DEFAULT AS IDENTITY NOT NULL,
4+
token_hash VARCHAR(255) NOT NULL,
5+
user_id BIGINT NOT NULL,
6+
expires_at TIMESTAMP WITHOUT TIME ZONE NOT NULL,
7+
created_at TIMESTAMP WITHOUT TIME ZONE NOT NULL,
8+
CONSTRAINT pk_refresh_tokens PRIMARY KEY (id)
9+
);
10+
11+
CREATE TABLE subscriptions
12+
(
13+
id BIGINT GENERATED BY DEFAULT AS IDENTITY NOT NULL,
14+
uuid UUID NOT NULL,
15+
feed_url VARCHAR(255) NOT NULL,
16+
created_at TIMESTAMP WITHOUT TIME ZONE NOT NULL,
17+
updated_at TIMESTAMP WITHOUT TIME ZONE NOT NULL,
18+
CONSTRAINT pk_subscriptions PRIMARY KEY (id)
19+
);
20+
21+
CREATE TABLE user_roles
22+
(
23+
user_id BIGINT NOT NULL,
24+
user_roles VARCHAR(255)
25+
);
26+
27+
CREATE TABLE user_subscription
28+
(
29+
id BIGINT GENERATED BY DEFAULT AS IDENTITY NOT NULL,
30+
uuid UUID NOT NULL,
31+
user_id BIGINT,
32+
subscription_id BIGINT,
33+
is_subscribed BOOLEAN DEFAULT TRUE,
34+
created_at TIMESTAMP WITHOUT TIME ZONE NOT NULL,
35+
updated_at TIMESTAMP WITHOUT TIME ZONE NOT NULL,
36+
CONSTRAINT pk_user_subscription PRIMARY KEY (id)
37+
);
38+
39+
CREATE TABLE users
40+
(
41+
id BIGINT GENERATED BY DEFAULT AS IDENTITY NOT NULL,
42+
uuid UUID NOT NULL,
43+
username VARCHAR(255) NOT NULL,
44+
password VARCHAR(255) NOT NULL,
45+
email VARCHAR(255) NOT NULL,
46+
created_at TIMESTAMP WITHOUT TIME ZONE,
47+
updated_at TIMESTAMP WITHOUT TIME ZONE,
48+
CONSTRAINT pk_users PRIMARY KEY (id)
49+
);
50+
51+
ALTER TABLE refresh_tokens
52+
ADD CONSTRAINT uc_refresh_tokens_tokenhash UNIQUE (token_hash);
53+
54+
ALTER TABLE subscriptions
55+
ADD CONSTRAINT uc_subscriptions_uuid UNIQUE (uuid);
56+
57+
ALTER TABLE user_subscription
58+
ADD CONSTRAINT uc_user_subscription_uuid UNIQUE (uuid);
59+
60+
ALTER TABLE users
61+
ADD CONSTRAINT uc_users_email UNIQUE (email);
62+
63+
ALTER TABLE users
64+
ADD CONSTRAINT uc_users_username UNIQUE (username);
65+
66+
ALTER TABLE users
67+
ADD CONSTRAINT uc_users_uuid UNIQUE (uuid);
68+
69+
ALTER TABLE refresh_tokens
70+
ADD CONSTRAINT FK_REFRESH_TOKENS_ON_USER FOREIGN KEY (user_id) REFERENCES users (id);
71+
72+
ALTER TABLE user_subscription
73+
ADD CONSTRAINT FK_USER_SUBSCRIPTION_ON_SUBSCRIPTION FOREIGN KEY (subscription_id) REFERENCES subscriptions (id);
74+
75+
ALTER TABLE user_subscription
76+
ADD CONSTRAINT FK_USER_SUBSCRIPTION_ON_USER FOREIGN KEY (user_id) REFERENCES users (id);
77+
78+
ALTER TABLE user_roles
79+
ADD CONSTRAINT fk_user_roles_on_user_entity FOREIGN KEY (user_id) REFERENCES users (id);

0 commit comments

Comments
 (0)