From b37b8d1ef333f5ec727178c50f9eae8caa774237 Mon Sep 17 00:00:00 2001 From: robertp1984 Date: Tue, 26 May 2026 06:46:14 +0200 Subject: [PATCH] Improve existing PostgreSQL schema to use better data types. Closes #18 --- .../db/migration/V1.0__CreateSchema.sql | 16 ++++++++-------- .../resources/db/migration/V1.1__InitData.sql | 16 ++++++++-------- .../resources/db/migration/V1.2__AddTags.sql | 10 +++++----- 3 files changed, 21 insertions(+), 21 deletions(-) diff --git a/springboot-note/src/main/resources/db/migration/V1.0__CreateSchema.sql b/springboot-note/src/main/resources/db/migration/V1.0__CreateSchema.sql index fb32c38..eac273f 100644 --- a/springboot-note/src/main/resources/db/migration/V1.0__CreateSchema.sql +++ b/springboot-note/src/main/resources/db/migration/V1.0__CreateSchema.sql @@ -1,7 +1,7 @@ ----- STICKY NOTES CREATE TABLE sticky_note ( - id NUMERIC(20) PRIMARY KEY, + id BIGINT PRIMARY KEY, title VARCHAR(1024) NOT NULL, body VARCHAR(10000) NOT NULL, type VARCHAR(32) NOT NULL, @@ -12,8 +12,8 @@ CREATE INDEX sticky_note_title_idx ON sticky_note(title); CREATE TABLE sticky_note_link ( - id NUMERIC(20) PRIMARY KEY, - sticky_note_id NUMERIC(20) NOT NULL, + id BIGINT PRIMARY KEY, + sticky_note_id BIGINT NOT NULL, link VARCHAR(1024) NOT NULL, CONSTRAINT sticky_note_link_sticky_note_id_fk FOREIGN KEY (sticky_note_id) REFERENCES sticky_note(id) ); @@ -23,7 +23,7 @@ CREATE INDEX sticky_note_link_sticky_note_id_idx ON sticky_note_link(sticky_note ----- AUTHENTICATION CREATE TABLE users ( - id NUMERIC(20) PRIMARY KEY, + id BIGINT PRIMARY KEY, username VARCHAR(256) UNIQUE NOT NULL, password VARCHAR(256) NOT NULL, enabled NUMERIC(1) NOT NULL, @@ -36,7 +36,7 @@ CREATE UNIQUE INDEX users_username_idx ON users(username); CREATE TABLE roles ( - id NUMERIC(20) PRIMARY KEY, + id BIGINT PRIMARY KEY, rolename VARCHAR(256) UNIQUE NOT NULL ); CREATE SEQUENCE roles_seq START WITH 1 INCREMENT BY 1; @@ -44,9 +44,9 @@ CREATE UNIQUE INDEX roles_rolename_idx ON roles(rolename); CREATE TABLE user_roles ( - id NUMERIC(20) PRIMARY KEY, - user_id NUMERIC(20) NOT NULL, - role_id NUMERIC(20) NOT NULL, + id BIGINT PRIMARY KEY, + user_id BIGINT NOT NULL, + role_id BIGINT NOT NULL, CONSTRAINT user_roles_user_id_fk FOREIGN KEY (user_id) REFERENCES users(id), CONSTRAINT user_roles_role_id_fk FOREIGN KEY (role_id) REFERENCES roles(id) ); diff --git a/springboot-note/src/main/resources/db/migration/V1.1__InitData.sql b/springboot-note/src/main/resources/db/migration/V1.1__InitData.sql index 5d11bbe..30358fc 100644 --- a/springboot-note/src/main/resources/db/migration/V1.1__InitData.sql +++ b/springboot-note/src/main/resources/db/migration/V1.1__InitData.sql @@ -1,13 +1,13 @@ -CREATE OR REPLACE FUNCTION add_sticky_note(title VARCHAR, body VARCHAR, type VARCHAR) RETURNS NUMERIC AS $$ +CREATE OR REPLACE FUNCTION add_sticky_note(title VARCHAR, body VARCHAR, type VARCHAR) RETURNS BIGINT AS $$ BEGIN INSERT INTO sticky_note(id, title, body, type, created) VALUES(nextval('sticky_note_seq'), title, body, type, CURRENT_TIMESTAMP); RETURN currval('sticky_note_seq'); END; $$ LANGUAGE plpgsql; -CREATE OR REPLACE FUNCTION add_sticky_note_link(sticky_note_title VARCHAR, link VARCHAR) RETURNS NUMERIC AS $$ +CREATE OR REPLACE FUNCTION add_sticky_note_link(sticky_note_title VARCHAR, link VARCHAR) RETURNS BIGINT AS $$ DECLARE - sticky_note_id NUMERIC; + sticky_note_id BIGINT; BEGIN SELECT id INTO sticky_note_id FROM sticky_note WHERE title=sticky_note_title; INSERT INTO sticky_note_link(id, sticky_note_id, link) VALUES(nextval('sticky_note_link_seq'), sticky_note_id, link); @@ -16,7 +16,7 @@ CREATE OR REPLACE FUNCTION add_sticky_note_link(sticky_note_title VARCHAR, link $$ LANGUAGE plpgsql; -CREATE OR REPLACE FUNCTION add_user(username VARCHAR, firstname VARCHAR, lastname VARCHAR, password VARCHAR) RETURNS NUMERIC AS $$ +CREATE OR REPLACE FUNCTION add_user(username VARCHAR, firstname VARCHAR, lastname VARCHAR, password VARCHAR) RETURNS BIGINT AS $$ DECLARE BEGIN INSERT INTO users(id, username, password, enabled, first_name, last_name) VALUES(nextval('users_seq'), username, password, 1, firstname, lastname); @@ -24,7 +24,7 @@ CREATE OR REPLACE FUNCTION add_user(username VARCHAR, firstname VARCHAR, lastnam END; $$ LANGUAGE plpgsql; -CREATE OR REPLACE FUNCTION add_role(rolename VARCHAR) RETURNS NUMERIC AS $$ +CREATE OR REPLACE FUNCTION add_role(rolename VARCHAR) RETURNS BIGINT AS $$ DECLARE BEGIN INSERT INTO roles(id, rolename) VALUES(nextval('roles_seq'), rolename); @@ -32,10 +32,10 @@ CREATE OR REPLACE FUNCTION add_role(rolename VARCHAR) RETURNS NUMERIC AS $$ END; $$ LANGUAGE plpgsql; -CREATE OR REPLACE FUNCTION add_user_role(username_to_link VARCHAR, rolename_to_link VARCHAR) RETURNS NUMERIC AS $$ +CREATE OR REPLACE FUNCTION add_user_role(username_to_link VARCHAR, rolename_to_link VARCHAR) RETURNS BIGINT AS $$ DECLARE - user_id NUMERIC; - role_id NUMERIC; + user_id BIGINT; + role_id BIGINT; BEGIN SELECT id INTO user_id FROM users WHERE username=username_to_link; SELECT id INTO role_id FROM roles WHERE rolename=rolename_to_link; diff --git a/springboot-note/src/main/resources/db/migration/V1.2__AddTags.sql b/springboot-note/src/main/resources/db/migration/V1.2__AddTags.sql index 80e7287..e8689d5 100644 --- a/springboot-note/src/main/resources/db/migration/V1.2__AddTags.sql +++ b/springboot-note/src/main/resources/db/migration/V1.2__AddTags.sql @@ -1,5 +1,5 @@ CREATE TABLE tag ( - id NUMERIC(20) PRIMARY KEY, + id BIGINT PRIMARY KEY, name VARCHAR(1024) NOT NULL UNIQUE, description VARCHAR(1024) NOT NULL ); @@ -9,9 +9,9 @@ CREATE UNIQUE INDEX tag_name_idx ON tag(name); ----- CREATE TABLE sticky_note_tag ( - id NUMERIC(20) PRIMARY KEY, - sticky_note_id NUMERIC(20) NOT NULL, - tag_id NUMERIC(20) NOT NULL, + id BIGINT PRIMARY KEY, + sticky_note_id BIGINT NOT NULL, + tag_id BIGINT NOT NULL, CONSTRAINT sticky_note_tag_sticky_note_id_fk FOREIGN KEY (sticky_note_id) REFERENCES sticky_note(id), CONSTRAINT sticky_note_tag_tag_id_fk FOREIGN KEY (tag_id) REFERENCES tag(id) ); @@ -21,7 +21,7 @@ CREATE INDEX sticky_note_tag_tag_id_idx ON sticky_note_tag(tag_id); ----- -CREATE OR REPLACE FUNCTION add_tag(name VARCHAR, description VARCHAR) RETURNS NUMERIC AS $$ +CREATE OR REPLACE FUNCTION add_tag(name VARCHAR, description VARCHAR) RETURNS BIGINT AS $$ DECLARE BEGIN INSERT INTO tag(id, name, description) VALUES(nextval('tag_seq'), name, description);