From f8a7d417cb916b81cfa685175f3e6afbe6063cee Mon Sep 17 00:00:00 2001 From: Vitaly Takmazov Date: Sun, 29 Jan 2023 05:44:21 +0300 Subject: SQLite support --- src/main/resources/data-mysql.sql | 13 ++ src/main/resources/data-sqlite.sql | 22 +- src/main/resources/schema-sqlite.sql | 231 +++++++++++++-------- .../resources/templates/views/partial/message.html | 4 +- src/main/resources/templates/views/thread.html | 8 +- 5 files changed, 177 insertions(+), 101 deletions(-) create mode 100644 src/main/resources/data-mysql.sql (limited to 'src/main/resources') diff --git a/src/main/resources/data-mysql.sql b/src/main/resources/data-mysql.sql new file mode 100644 index 00000000..a5db173a --- /dev/null +++ b/src/main/resources/data-mysql.sql @@ -0,0 +1,13 @@ +INSERT INTO users(id, nick, passw) VALUES(0, 'Anonymous', 'password'); +INSERT INTO users(id, nick, passw) VALUES(2, 'juick', 'password'); +INSERT INTO users(id, nick, passw) VALUES(5, 'archive', 'password'); +INSERT INTO tags(tag_id, name) VALUES(2, 'juick'); +ALTER TABLE tags AUTO_INCREMENT = 10; +ALTER TABLE users AUTO_INCREMENT = 10; +INSERT INTO reactions (like_id, description) VALUES (1, 'like'); +INSERT INTO reactions (like_id, description) VALUES (2, 'love'); +INSERT INTO reactions (like_id, description) VALUES (3, 'lol'); +INSERT INTO reactions (like_id, description) VALUES (4, 'hmm'); +INSERT INTO reactions (like_id, description) VALUES (5, 'angry'); +INSERT INTO reactions (like_id, description) VALUES (6, 'uhblya'); +INSERT INTO reactions (like_id, description) VALUES (7, 'ugh'); diff --git a/src/main/resources/data-sqlite.sql b/src/main/resources/data-sqlite.sql index bb1203a4..d34cb832 100644 --- a/src/main/resources/data-sqlite.sql +++ b/src/main/resources/data-sqlite.sql @@ -1,11 +1,11 @@ -INSERT INTO users(id, nick, passw) VALUES(0, 'Anonymous', 'password'); -INSERT INTO users(id, nick, passw) VALUES(2, 'juick', 'password'); -INSERT INTO users(id, nick, passw) VALUES(5, 'archive', 'password'); -INSERT INTO tags(tag_id, name) VALUES(2, 'juick'); -INSERT INTO reactions (like_id, description) VALUES (1, 'like'); -INSERT INTO reactions (like_id, description) VALUES (2, 'love'); -INSERT INTO reactions (like_id, description) VALUES (3, 'lol'); -INSERT INTO reactions (like_id, description) VALUES (4, 'hmm'); -INSERT INTO reactions (like_id, description) VALUES (5, 'angry'); -INSERT INTO reactions (like_id, description) VALUES (6, 'uhblya'); -INSERT INTO reactions (like_id, description) VALUES (7, 'ugh'); +INSERT INTO users(id, nick, passw) VALUES(0, 'Anonymous', 'password');; +INSERT INTO users(id, nick, passw) VALUES(2, 'juick', 'password');; +INSERT INTO users(id, nick, passw) VALUES(5, 'archive', 'password');; +INSERT INTO tags(tag_id, name) VALUES(2, 'juick');; +INSERT INTO reactions (like_id, description) VALUES (1, 'like');; +INSERT INTO reactions (like_id, description) VALUES (2, 'love');; +INSERT INTO reactions (like_id, description) VALUES (3, 'lol');; +INSERT INTO reactions (like_id, description) VALUES (4, 'hmm');; +INSERT INTO reactions (like_id, description) VALUES (5, 'angry');; +INSERT INTO reactions (like_id, description) VALUES (6, 'uhblya');; +INSERT INTO reactions (like_id, description) VALUES (7, 'ugh') \ No newline at end of file diff --git a/src/main/resources/schema-sqlite.sql b/src/main/resources/schema-sqlite.sql index b624d67b..8e496069 100644 --- a/src/main/resources/schema-sqlite.sql +++ b/src/main/resources/schema-sqlite.sql @@ -1,64 +1,91 @@ -CREATE TABLE IF NOT EXISTS "user_services" ( +PRAGMA journal_mode=WAL;; +CREATE TABLE user_services ( user_id INTEGER NOT NULL, regid character varying(1024) NOT NULL, - ts timestamp with time zone DEFAULT CURRENT_TIMESTAMP NOT NULL, service_type varchar(255) not null default 'fcm', + ts DEFAULT CURRENT_TIMESTAMP NOT NULL, + service_type varchar(255) not null default 'fcm', FOREIGN KEY (user_id) REFERENCES users(id), UNIQUE (regid) -); +);; +CREATE TRIGGER INSERT_user_services AFTER INSERT ON user_services + BEGIN + UPDATE user_services SET ts = strftime("%Y-%m-%dT%H:%M:%fZ", CURRENT_TIMESTAMP) + WHERE rowid = new.rowid; + END;; CREATE TABLE auth ( user_id INTEGER, protocol TEXT CHECK (protocol IN ('xmpp', 'email', 'sms')) NOT NULL, account character varying(128) NOT NULL, authcode character varying(8) NOT NULL, - ts timestamp with time zone DEFAULT CURRENT_TIMESTAMP NOT NULL, + ts DEFAULT CURRENT_TIMESTAMP NOT NULL, FOREIGN KEY (user_id) REFERENCES users(id) -); +);; +CREATE TRIGGER INSERT_auth AFTER INSERT ON auth + BEGIN + UPDATE auth SET ts = strftime("%Y-%m-%dT%H:%M:%fZ", CURRENT_TIMESTAMP) + WHERE rowid = new.rowid; + END;; CREATE TABLE bl_tags ( - user_id bigint NOT NULL, + user_id INTEGER NOT NULL, tag_id bigint NOT NULL, FOREIGN KEY (user_id) REFERENCES users(id), FOREIGN KEY (tag_id) REFERENCES tags(tag_id) -); +);; CREATE TABLE bl_users ( - user_id bigint NOT NULL, + user_id INTEGER NOT NULL, bl_user_id bigint NOT NULL, - ts timestamp with time zone DEFAULT CURRENT_TIMESTAMP NOT NULL, + ts DEFAULT CURRENT_TIMESTAMP NOT NULL, PRIMARY KEY (user_id, bl_user_id), FOREIGN KEY (user_id) REFERENCES users(id), FOREIGN KEY (bl_user_id) REFERENCES users(id) -); +);; +CREATE TRIGGER INSERT_bl_users AFTER INSERT ON bl_users + BEGIN + UPDATE bl_users SET ts = strftime("%Y-%m-%dT%H:%M:%fZ", CURRENT_TIMESTAMP) + WHERE rowid = new.rowid; + END;; CREATE TABLE emails ( - user_id bigint NOT NULL, + user_id INTEGER NOT NULL, email character varying(128) NOT NULL, subscr_hour smallint, FOREIGN KEY (user_id) REFERENCES users(id) -); +);; CREATE TABLE facebook ( - user_id bigint, + user_id INTEGER, fb_id numeric, loginhash character varying(36), access_token character varying(255), - ts timestamp with time zone DEFAULT CURRENT_TIMESTAMP NOT NULL, + ts DEFAULT CURRENT_TIMESTAMP NOT NULL, fb_name character varying(64), fb_link character varying(255) NOT NULL, crosspost boolean DEFAULT true NOT NULL, FOREIGN KEY (user_id) REFERENCES users(id) -); +);; +CREATE TRIGGER INSERT_facebook AFTER INSERT ON facebook + BEGIN + UPDATE facebook SET ts = strftime("%Y-%m-%dT%H:%M:%fZ", CURRENT_TIMESTAMP) + WHERE rowid = new.rowid; + END;; CREATE TABLE favorites ( - user_id bigint NOT NULL, + user_id INTEGER NOT NULL, message_id bigint NOT NULL, ts timestamp with time zone, like_id smallint DEFAULT 1 NOT NULL, user_uri character varying(255) NOT NULL DEFAULT '', FOREIGN KEY (like_id) REFERENCES reactions(like_id) -); +);; CREATE TABLE followers ( - user_id bigint, - ts timestamp with time zone DEFAULT CURRENT_TIMESTAMP NOT NULL, + user_id INTEGER, + ts DEFAULT CURRENT_TIMESTAMP NOT NULL, acct character varying(64) NOT NULL, PRIMARY KEY (user_id) FOREIGN KEY (user_id) REFERENCES users(id) -); +);; +CREATE TRIGGER INSERT_followers AFTER INSERT ON followers + BEGIN + UPDATE followers SET ts = strftime("%Y-%m-%dT%H:%M:%fZ", CURRENT_TIMESTAMP) + WHERE rowid = new.rowid; + END;; CREATE TABLE images ( mid bigint NOT NULL, rid bigint NOT NULL, @@ -68,33 +95,38 @@ CREATE TABLE images ( height bigint NOT NULL, width bigint NOT NULL, PRIMARY KEY (mid, rid) -); +);; CREATE TABLE jids ( - user_id bigint, + user_id INTEGER, jid character varying(64) NOT NULL, active smallint DEFAULT 0 NOT NULL, loginhash character varying(36), - ts timestamp with time zone DEFAULT CURRENT_TIMESTAMP NOT NULL, + ts DEFAULT CURRENT_TIMESTAMP NOT NULL, FOREIGN KEY (user_id) REFERENCES users(id) -); +);; +CREATE TRIGGER INSERT_jids AFTER INSERT ON jids + BEGIN + UPDATE jids SET ts = strftime("%Y-%m-%dT%H:%M:%fZ", CURRENT_TIMESTAMP) + WHERE rowid = new.rowid; + END;; CREATE TABLE logins ( - user_id bigint NOT NULL, + user_id INTEGER NOT NULL, hash character varying(16) NOT NULL, FOREIGN KEY (user_id) REFERENCES users(id) -); +);; CREATE TABLE meon ( id INTEGER NOT NULL, - user_id bigint NOT NULL, + user_id INTEGER NOT NULL, link character varying(255) NOT NULL, name character varying(32) NOT NULL, ico smallint, FOREIGN KEY (user_id) REFERENCES users(id) -); +);; CREATE TABLE messages ( message_id INTEGER PRIMARY KEY NOT NULL, - user_id bigint NOT NULL, + user_id INTEGER NOT NULL, lang TEXT DEFAULT '__' NOT NULL, - ts timestamp with time zone DEFAULT CURRENT_TIMESTAMP NOT NULL, + ts DEFAULT CURRENT_TIMESTAMP NOT NULL, replies smallint DEFAULT (0) NOT NULL, maxreplyid smallint DEFAULT (0) NOT NULL, privacy smallint DEFAULT (1) NOT NULL, @@ -106,35 +138,35 @@ CREATE TABLE messages ( popular smallint DEFAULT (0) NOT NULL, hidden smallint DEFAULT (0) NOT NULL, likes smallint DEFAULT (0) NOT NULL, - updated timestamp with time zone DEFAULT CURRENT_TIMESTAMP NOT NULL, + updated DEFAULT CURRENT_TIMESTAMP NOT NULL, FOREIGN KEY (user_id) REFERENCES users(id) -); +);; CREATE TABLE messages_access ( message_id INTEGER NOT NULL, - user_id bigint NOT NULL, + user_id INTEGER NOT NULL, FOREIGN KEY (user_id) REFERENCES users(id), FOREIGN KEY (message_id) REFERENCES messages(message_id) -); +);; CREATE TABLE messages_properties ( - message_id INTEGER PRIMARY KEY NOT NULL, + message_id INTEGER NOT NULL, reply_id smallint NOT NULL, property_key character varying(255) NOT NULL, property_value text NOT NULL, UNIQUE (message_id, reply_id, property_key), FOREIGN KEY (message_id) REFERENCES messages(message_id) -); +);; CREATE TABLE messages_tags ( message_id INTEGER NOT NULL, tag_id bigint NOT NULL, FOREIGN KEY (message_id) REFERENCES messages(message_id) -); +);; CREATE TABLE messages_txt ( message_id INTEGER NOT NULL, repliesby text, txt text NOT NULL, - updated_at timestamp with time zone DEFAULT CURRENT_TIMESTAMP NOT NULL, + updated_at DEFAULT CURRENT_TIMESTAMP NOT NULL, FOREIGN KEY (message_id) REFERENCES messages(message_id) -); +);; CREATE TABLE places ( place_id INTEGER PRIMARY KEY NOT NULL, lat numeric(10,7) NOT NULL, @@ -143,60 +175,70 @@ CREATE TABLE places ( descr character varying(255), url character varying(128), user_id bigint NOT NULL, - ts timestamp with time zone DEFAULT CURRENT_TIMESTAMP NOT NULL -); + ts DEFAULT CURRENT_TIMESTAMP NOT NULL +);; CREATE TABLE places_tags ( place_id INTEGER NOT NULL, tag_id bigint NOT NULL, FOREIGN KEY (place_id) REFERENCES places(place_id) -); +);; CREATE TABLE pm ( - user_id bigint NOT NULL, - user_id_to bigint NOT NULL, - ts timestamp with time zone DEFAULT CURRENT_TIMESTAMP NOT NULL, + user_id INTEGER NOT NULL, + user_id_to INTEGER NOT NULL, + ts DEFAULT CURRENT_TIMESTAMP NOT NULL, txt text NOT NULL, FOREIGN KEY (user_id) REFERENCES users(id), FOREIGN KEY (user_id_to) REFERENCES users(id) -); +);; +CREATE TRIGGER INSERT_pm AFTER INSERT ON pm + BEGIN + UPDATE pm SET ts = strftime("%Y-%m-%dT%H:%M:%fZ", CURRENT_TIMESTAMP) + WHERE rowid = new.rowid; + END;; CREATE TABLE reactions ( like_id INTEGER PRIMARY KEY NOT NULL, description character varying(100) NOT NULL -); +);; CREATE TABLE replies ( message_id bigint NOT NULL, reply_id smallint NOT NULL, - user_id bigint NOT NULL, + user_id INTEGER NOT NULL, replyto smallint DEFAULT (0) NOT NULL, - ts timestamp with time zone DEFAULT CURRENT_TIMESTAMP NOT NULL, + ts DEFAULT CURRENT_TIMESTAMP NOT NULL, attach TEXT CHECK (attach IN ('jpg', 'mp4', 'png')), txt text NOT NULL, - updated_at timestamp with time zone DEFAULT CURRENT_TIMESTAMP NOT NULL, + updated_at DEFAULT CURRENT_TIMESTAMP NOT NULL, user_uri character varying(255) DEFAULT NULL, reply_uri character varying(255) DEFAULT NULL, html smallint DEFAULT '0' NOT NULL, FOREIGN KEY (message_id) REFERENCES messages(message_id), FOREIGN KEY (user_id) REFERENCES users(id) -); +);; CREATE TABLE subscr_messages ( message_id bigint NOT NULL, - suser_id bigint NOT NULL, + suser_id INTEGER NOT NULL, last_read_rid smallint DEFAULT 0 NOT NULL, FOREIGN KEY (message_id) REFERENCES messages(message_id), FOREIGN KEY (suser_id) REFERENCES users(id) -); +);; CREATE TABLE subscr_tags ( tag_id bigint NOT NULL, - suser_id bigint NOT NULL, + suser_id INTEGER NOT NULL, FOREIGN KEY (tag_id) REFERENCES tags(tag_id), FOREIGN KEY (suser_id) REFERENCES users(id) -); +);; CREATE TABLE subscr_users ( - user_id bigint NOT NULL, - suser_id bigint NOT NULL, - ts timestamp with time zone DEFAULT CURRENT_TIMESTAMP NOT NULL, + user_id INTEGER NOT NULL, + suser_id INTEGER NOT NULL, + ts DEFAULT CURRENT_TIMESTAMP NOT NULL, FOREIGN KEY (user_id) REFERENCES users(id), FOREIGN KEY (suser_id) REFERENCES users(id) -); +);; +CREATE TRIGGER INSERT_subscr_users AFTER INSERT ON subscr_users + BEGIN + UPDATE subscr_users SET ts = strftime("%Y-%m-%dT%H:%M:%fZ", CURRENT_TIMESTAMP) + WHERE rowid = new.rowid; + END;; CREATE TABLE tags ( tag_id INTEGER PRIMARY KEY NOT NULL, synonym_id bigint, @@ -206,46 +248,56 @@ CREATE TABLE tags ( stat_messages bigint DEFAULT (0) NOT NULL, stat_users smallint DEFAULT (0) NOT NULL, FOREIGN KEY (synonym_id) REFERENCES tags(tag_id) -); +);; CREATE TABLE tags_ignore ( tag_id bigint NOT NULL, FOREIGN KEY (tag_id) REFERENCES tags(tag_id) -); +);; CREATE TABLE tags_synonyms ( name character varying(64) NOT NULL, changeto character varying(64) NOT NULL -); +);; CREATE TABLE telegram ( - user_id bigint, + user_id INTEGER, tg_id numeric NOT NULL, tg_name character varying(64) NOT NULL, - ts timestamp with time zone DEFAULT CURRENT_TIMESTAMP NOT NULL, + ts DEFAULT CURRENT_TIMESTAMP NOT NULL, loginhash character varying(36), FOREIGN KEY (user_id) REFERENCES users(id) -); +);; +CREATE TRIGGER INSERT_telegram AFTER INSERT ON telegram + BEGIN + UPDATE telegram SET ts = strftime("%Y-%m-%dT%H:%M:%fZ", CURRENT_TIMESTAMP) + WHERE rowid = new.rowid; + END;; CREATE TABLE top_ignore_messages ( message_id bigint NOT NULL, FOREIGN KEY (message_id) REFERENCES messages(message_id) -); +);; CREATE TABLE top_ignore_tags ( tag_id NOT NULL, FOREIGN KEY (tag_id) REFERENCES tag(tag_id) -); +);; CREATE TABLE top_ignore_users ( - user_id bigint NOT NULL, + user_id INTEGER NOT NULL, FOREIGN KEY (user_id) REFERENCES users(id) -); +);; CREATE TABLE twitter ( user_id INTEGER NOT NULL, access_token character varying(64) NOT NULL, access_token_secret character varying(64) NOT NULL, uname character varying(64) NOT NULL, - ts timestamp with time zone DEFAULT CURRENT_TIMESTAMP NOT NULL, + ts DEFAULT CURRENT_TIMESTAMP NOT NULL, crosspost boolean DEFAULT true NOT NULL, FOREIGN KEY (user_id) REFERENCES users(id) -); +);; +CREATE TRIGGER INSERT_twitter AFTER INSERT ON twitter + BEGIN + UPDATE twitter SET ts = strftime("%Y-%m-%dT%H:%M:%fZ", CURRENT_TIMESTAMP) + WHERE rowid = new.rowid; + END;; CREATE TABLE users ( - id bigint NOT NULL, + id INTEGER PRIMARY KEY, nick character varying(64) NOT NULL COLLATE NOCASE, passw character varying(32) NOT NULL, lang users_lang DEFAULT '__' NOT NULL, @@ -255,15 +307,15 @@ CREATE TABLE users ( lastphoto bigint DEFAULT (0) NOT NULL, karma smallint DEFAULT (0) NOT NULL, last_seen timestamp with time zone, - PRIMARY KEY (id) -); + UNIQUE(nick) +);; CREATE TABLE users_subscr ( - user_id bigint NOT NULL, + user_id INTEGER NOT NULL, cnt smallint DEFAULT (0) NOT NULL, FOREIGN KEY (user_id) REFERENCES users(id) -); +);; CREATE TABLE usersinfo ( - user_id bigint NOT NULL, + user_id INTEGER NOT NULL, jid character varying(64), fullname character varying(64), country character varying(32), @@ -271,26 +323,32 @@ CREATE TABLE usersinfo ( gender character varying(32), bday character varying(32), descr text, + UNIQUE(user_id), FOREIGN KEY (user_id) REFERENCES users(id) -); +);; CREATE TABLE vk ( - user_id bigint, + user_id INTEGER, vk_id numeric NULL, loginhash character varying(36), access_token character varying(128) NOT NULL, - ts timestamp with time zone DEFAULT CURRENT_TIMESTAMP NOT NULL, + ts DEFAULT CURRENT_TIMESTAMP NOT NULL, vk_name character varying(64) NOT NULL, vk_link character varying(64) NOT NULL, crosspost smallint DEFAULT (1) NOT NULL, FOREIGN KEY (user_id) REFERENCES users(id) -); +);; +CREATE TRIGGER INSERT_vk AFTER INSERT ON vk + BEGIN + UPDATE vk SET ts = strftime("%Y-%m-%dT%H:%M:%fZ", CURRENT_TIMESTAMP) + WHERE rowid = new.rowid; + END;; CREATE TABLE wl_users ( - user_id bigint NOT NULL, + user_id INTEGER NOT NULL, wl_user_id bigint NOT NULL, PRIMARY KEY (user_id, wl_user_id), FOREIGN KEY (user_id) REFERENCES users(id), FOREIGN KEY (wl_user_id) REFERENCES users(id) -); +);; CREATE TABLE oauth2_registered_client ( id varchar(100) NOT NULL, client_id varchar(100) NOT NULL, @@ -305,4 +363,9 @@ CREATE TABLE oauth2_registered_client ( client_settings varchar(2000) NOT NULL, token_settings varchar(2000) NOT NULL, PRIMARY KEY (id) -); +);; +CREATE TRIGGER INSERT_oauth2_registered_client AFTER INSERT ON oauth2_registered_client + BEGIN + UPDATE oauth2_registered_client SET client_id_issued_at = strftime("%Y-%m-%dT%H:%M:%fZ", CURRENT_TIMESTAMP) + WHERE rowid = new.rowid; + END diff --git a/src/main/resources/templates/views/partial/message.html b/src/main/resources/templates/views/partial/message.html index 9a33c432..9d54d614 100644 --- a/src/main/resources/templates/views/partial/message.html +++ b/src/main/resources/templates/views/partial/message.html @@ -11,8 +11,8 @@ · {% endif %} - diff --git a/src/main/resources/templates/views/thread.html b/src/main/resources/templates/views/thread.html index 7b68df66..ca74a2ff 100644 --- a/src/main/resources/templates/views/thread.html +++ b/src/main/resources/templates/views/thread.html @@ -16,8 +16,8 @@ · {% endif %} - @@ -143,8 +143,8 @@ {% endif %}
- -- cgit v1.2.3