Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@
@NoArgsConstructor
@AllArgsConstructor
@Builder
@Table(name = "refresh_tokens")
public class RefreshTokenEntity {
@Id
@Generated
Expand Down
5 changes: 2 additions & 3 deletions src/main/resources/application.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -19,10 +19,9 @@ spring:
flyway:
user: "${POSTGRES_USER}"
password: "${POSTGRES_PASSWORD}"
schemas: "${POSTGRES_DB}"
locations: filesystem:db/migration
schemas: public
url: "jdbc:postgresql://${POSTGRES_HOST}:${POSTGRES_PORT}/${POSTGRES_DB}"
enabled: false
enabled: true
data:
redis:
host: "${REDIS_HOST}"
Expand Down
79 changes: 79 additions & 0 deletions src/main/resources/db/migration/V1__initial_migration.sql
Original file line number Diff line number Diff line change
@@ -0,0 +1,79 @@
CREATE TABLE refresh_tokens
(
id BIGINT GENERATED BY DEFAULT AS IDENTITY NOT NULL,
token_hash VARCHAR(255) NOT NULL,
user_id BIGINT NOT NULL,
expires_at TIMESTAMP WITHOUT TIME ZONE NOT NULL,
created_at TIMESTAMP WITHOUT TIME ZONE NOT NULL,
CONSTRAINT pk_refresh_tokens PRIMARY KEY (id)
);

CREATE TABLE subscriptions
(
id BIGINT GENERATED BY DEFAULT AS IDENTITY NOT NULL,
uuid UUID NOT NULL,
feed_url VARCHAR(255) NOT NULL,
created_at TIMESTAMP WITHOUT TIME ZONE NOT NULL,
updated_at TIMESTAMP WITHOUT TIME ZONE NOT NULL,
CONSTRAINT pk_subscriptions PRIMARY KEY (id)
);

CREATE TABLE user_roles
(
user_id BIGINT NOT NULL,
user_roles VARCHAR(255)
);

CREATE TABLE user_subscription
(
id BIGINT GENERATED BY DEFAULT AS IDENTITY NOT NULL,
uuid UUID NOT NULL,
user_id BIGINT,
subscription_id BIGINT,
is_subscribed BOOLEAN DEFAULT TRUE,
created_at TIMESTAMP WITHOUT TIME ZONE NOT NULL,
updated_at TIMESTAMP WITHOUT TIME ZONE NOT NULL,
CONSTRAINT pk_user_subscription PRIMARY KEY (id)
);

CREATE TABLE users
(
id BIGINT GENERATED BY DEFAULT AS IDENTITY NOT NULL,
uuid UUID NOT NULL,
username VARCHAR(255) NOT NULL,
password VARCHAR(255) NOT NULL,
email VARCHAR(255) NOT NULL,
created_at TIMESTAMP WITHOUT TIME ZONE,
updated_at TIMESTAMP WITHOUT TIME ZONE,
CONSTRAINT pk_users PRIMARY KEY (id)
);

ALTER TABLE refresh_tokens
ADD CONSTRAINT uc_refresh_tokens_tokenhash UNIQUE (token_hash);

ALTER TABLE subscriptions
ADD CONSTRAINT uc_subscriptions_uuid UNIQUE (uuid);

ALTER TABLE user_subscription
ADD CONSTRAINT uc_user_subscription_uuid UNIQUE (uuid);

ALTER TABLE users
ADD CONSTRAINT uc_users_email UNIQUE (email);

ALTER TABLE users
ADD CONSTRAINT uc_users_username UNIQUE (username);

ALTER TABLE users
ADD CONSTRAINT uc_users_uuid UNIQUE (uuid);

ALTER TABLE refresh_tokens
ADD CONSTRAINT FK_REFRESH_TOKENS_ON_USER FOREIGN KEY (user_id) REFERENCES users (id);

ALTER TABLE user_subscription
ADD CONSTRAINT FK_USER_SUBSCRIPTION_ON_SUBSCRIPTION FOREIGN KEY (subscription_id) REFERENCES subscriptions (id);

ALTER TABLE user_subscription
ADD CONSTRAINT FK_USER_SUBSCRIPTION_ON_USER FOREIGN KEY (user_id) REFERENCES users (id);

ALTER TABLE user_roles
ADD CONSTRAINT fk_user_roles_on_user_entity FOREIGN KEY (user_id) REFERENCES users (id);