Skip to content

Commit

Permalink
feat(database): implement database migrations
Browse files Browse the repository at this point in the history
  • Loading branch information
Shadow243 committed Jan 13, 2025
1 parent 263bc3f commit 5bbf052
Show file tree
Hide file tree
Showing 15 changed files with 289 additions and 145 deletions.
4 changes: 2 additions & 2 deletions config/database.php
Original file line number Diff line number Diff line change
Expand Up @@ -72,10 +72,10 @@
| defined above, and the db user must have read-write access to it:
|
| Postgresql:
| CREATE TABLE hm_user_session (hm_id varchar(250) primary key not null, data text, date timestamp);
| CREATE TABLE hm_user_session (hm_id varchar(250) primary key not null, data text, hm_version INTEGEF DEFAULT 1, date timestamp);
|
| MySQL or SQLite:
| CREATE TABLE hm_user_session (hm_id varchar(180), data longblob, lock INTEGER DEFAULT 0, date timestamp, primary key (hm_id));
| CREATE TABLE hm_user_session (hm_id varchar(180), data longblob, hm_version INTEGEF DEFAULT 1, lock INTEGER DEFAULT 0, date timestamp, primary key (hm_id));
|
|
| DB Authentication
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
DROP TABLE IF EXISTS hm_user;

CREATE TABLE IF NOT EXISTS hm_user (
username VARCHAR(255),
hash VARCHAR(255),
PRIMARY KEY (username)
);
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
DROP TABLE IF EXISTS hm_user_session;

CREATE TABLE IF NOT EXISTS hm_user_session (
hm_id VARCHAR(255),
data LONGBLOB,
date TIMESTAMP,
PRIMARY KEY (hm_id)
);
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
DROP TABLE IF EXISTS hm_user_settings;

CREATE TABLE IF NOT EXISTS hm_user_settings (
username VARCHAR(255),
settings LONGBLOB,
PRIMARY KEY (username)
);
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
ALTER TABLE hm_user_session ADD COLUMN hm_version INT DEFAULT 1;
12 changes: 12 additions & 0 deletions database/migrations/pgsql/20241209010100_create_hm_user_table.sql
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
DROP TABLE IF EXISTS hm_user;

DO $$
BEGIN
IF NOT EXISTS (SELECT 1 FROM information_schema.tables
WHERE table_name = 'hm_user') THEN
CREATE TABLE hm_user (
username VARCHAR(255) PRIMARY KEY,
hash VARCHAR(255)
);
END IF;
END $$;
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
DROP TABLE IF EXISTS hm_user_session;

DO $$
BEGIN
IF NOT EXISTS (SELECT 1 FROM information_schema.tables
WHERE table_name = 'hm_user_session') THEN
CREATE TABLE hm_user_session (
hm_id VARCHAR(255) PRIMARY KEY,
data BYTEA,
date TIMESTAMP
);
END IF;
END $$;
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
DROP TABLE IF EXISTS hm_user_settings;

DO $$
BEGIN
IF NOT EXISTS (SELECT 1 FROM information_schema.tables
WHERE table_name = 'hm_user_settings') THEN
CREATE TABLE hm_user_settings (
username VARCHAR(255) PRIMARY KEY,
settings BYTEA
);
END IF;
END $$;
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
DO $$
BEGIN
IF NOT EXISTS (
SELECT 1
FROM information_schema.columns
WHERE table_name = 'hm_user_session'
AND column_name = 'hm_version'
) THEN
ALTER TABLE hm_user_session
ADD COLUMN hm_version INT DEFAULT 1;
END IF;
END $$;
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
DROP TABLE IF EXISTS hm_user;

CREATE TABLE IF NOT EXISTS hm_user (
username TEXT NOT NULL,
hash TEXT NOT NULL,
PRIMARY KEY (username)
);
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
DROP TABLE IF EXISTS hm_user_session;

CREATE TABLE IF NOT EXISTS hm_user_session (
hm_id TEXT NOT NULL,
data BLOB,
date TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY (hm_id)
);

Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
DROP TABLE IF EXISTS hm_user_settings;

CREATE TABLE IF NOT EXISTS hm_user_settings (
username TEXT NOT NULL,
settings BLOB,
PRIMARY KEY (username)
);
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
PRAGMA foreign_keys=off;

CREATE TABLE hm_user_session_new (
hm_id TEXT NOT NULL,
data BLOB,
date TIMESTAMP,
hm_version INTEGER DEFAULT 1,
PRIMARY KEY (hm_id)
);

INSERT INTO hm_user_session_new (hm_id, data, date)
SELECT hm_id, data, date
FROM hm_user_session;

DROP TABLE hm_user_session;
ALTER TABLE hm_user_session_new RENAME TO hm_user_session;

PRAGMA foreign_keys=on;
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
PRAGMA foreign_keys=off;

CREATE TABLE hm_user_session_new (
hm_id TEXT PRIMARY KEY,
data BLOB,
date TIMESTAMP,
hm_version INTEGER DEFAULT 1,
lock INTEGER DEFAULT 0
);

INSERT INTO hm_user_session_new (hm_id, data, date, hm_version)
SELECT hm_id, data, date, hm_version
FROM hm_user_session;

DROP TABLE hm_user_session;

ALTER TABLE hm_user_session_new RENAME TO hm_user_session;

PRAGMA foreign_keys=on;
Loading

0 comments on commit 5bbf052

Please sign in to comment.