First commit

This commit is contained in:
heyethereum
2024-07-10 21:50:45 +08:00
parent a9b53e1abd
commit 7e59d4ffa2
5 changed files with 319 additions and 0 deletions

137
sql/Create_all_tables.sql Normal file
View File

@@ -0,0 +1,137 @@
-- Create schema if it doesn't exist
CREATE SCHEMA IF NOT EXISTS safeqr;
CREATE EXTENSION IF NOT EXISTS "uuid-ossp";
-- user table, need "" because user is a reserved word is postgres
CREATE TABLE safeqr."user" (
id character varying(255) PRIMARY KEY,
cognitoid character varying,
firstname character varying(255),
lastname character varying(255),
email character varying(255),
source character varying(255),
password character varying(255),
salt character varying(255),
cognito_id character varying(255),
first_name character varying(255),
last_name character varying(255)
);
-- Create QR_Code_Types table
CREATE TABLE safeqr.qr_code_types (
id SERIAL PRIMARY KEY,
type VARCHAR(100) NOT NULL,
description VARCHAR(100),
prefix VARCHAR(50),
table_name VARCHAR(100)
);
-- Create QR_Code table
-- Allow for nullable user id for testing KIV
CREATE TABLE safeqr.qr_code (
id UUID PRIMARY KEY DEFAULT uuid_generate_v4(),
qr_code_type_id INT REFERENCES safeqr.qr_code_types(id),
user_id VARCHAR(255) REFERENCES safeqr."user"(id) NULL,
contents VARCHAR(4096),
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
-- Create Scan_History table
CREATE TABLE safeqr.scan_history (
id SERIAL PRIMARY KEY,
qr_code_id UUID REFERENCES safeqr.qr_code(id),
user_id VARCHAR(255) REFERENCES safeqr."user"(id)
);
-- Create Scan_Bookmark table
CREATE TABLE safeqr.scan_bookmark (
id SERIAL PRIMARY KEY,
qr_code_id UUID REFERENCES safeqr.qr_code(id),
user_id VARCHAR(255) REFERENCES safeqr."user"(id),
active VARCHAR(7) CHECK (active IN ('ACTIVE', 'DELETED'))
);
-- Create URL table
CREATE TABLE safeqr.url (
id UUID PRIMARY KEY DEFAULT uuid_generate_v4(),
qr_code_id UUID REFERENCES safeqr.qr_code(id),
url VARCHAR(2048),
query VARCHAR(2048),
fragment VARCHAR(2048)
);
-- Create Text table
CREATE TABLE safeqr.text (
id UUID PRIMARY KEY DEFAULT uuid_generate_v4(),
qr_code_id UUID REFERENCES safeqr.qr_code(id),
text VARCHAR(2048)
);
-- Create Phone table
CREATE TABLE safeqr.phone (
id UUID PRIMARY KEY DEFAULT uuid_generate_v4(),
qr_code_id UUID REFERENCES safeqr.qr_code(id),
phone VARCHAR(100)
);
-- Create SMS table
CREATE TABLE safeqr.sms (
id UUID PRIMARY KEY DEFAULT uuid_generate_v4(),
qr_code_id UUID REFERENCES safeqr.qr_code(id),
phone VARCHAR(100),
message VARCHAR(160)
);
-- Create Email table
CREATE TABLE safeqr.email (
id UUID PRIMARY KEY DEFAULT uuid_generate_v4(),
qr_code_id UUID REFERENCES safeqr.qr_code(id),
email VARCHAR(200),
title VARCHAR(200),
message VARCHAR(7089)
);
-- Create GeoLocation table
CREATE TABLE safeqr.geolocation (
id UUID PRIMARY KEY DEFAULT uuid_generate_v4(),
qr_code_id UUID REFERENCES safeqr.qr_code(id),
latitude DOUBLE PRECISION,
longitude DOUBLE PRECISION
);
-- Create Wifi table
CREATE TABLE safeqr.wifi (
id UUID PRIMARY KEY DEFAULT uuid_generate_v4(),
qr_code_id UUID REFERENCES safeqr.qr_code(id),
ssid VARCHAR(200),
password VARCHAR(200),
encryption VARCHAR(200),
hidden BOOLEAN
);
-- Create Bitcoin table
CREATE TABLE safeqr.bitcoin (
id UUID PRIMARY KEY DEFAULT uuid_generate_v4(),
qr_code_id UUID REFERENCES safeqr.qr_code(id),
address VARCHAR(200),
amount BIGINT,
message VARCHAR(250)
);
-- Create VCard table
CREATE TABLE safeqr.vcard (
id UUID PRIMARY KEY DEFAULT uuid_generate_v4(),
qr_code_id UUID REFERENCES safeqr.qr_code(id),
version VARCHAR(50),
name VARCHAR(250),
organisation VARCHAR(250),
title VARCHAR(50),
address VARCHAR(250),
tel_work VARCHAR(250),
tel_cell VARCHAR(250),
email VARCHAR(250),
url VARCHAR(2048)
);

16
sql/Drop_all_tables.sql Normal file
View File

@@ -0,0 +1,16 @@
-- Drop the tables with CASCADE to handle dependencies
DROP TABLE IF EXISTS safeqr.vcard CASCADE;
DROP TABLE IF EXISTS safeqr.bitcoin CASCADE;
DROP TABLE IF EXISTS safeqr.wifi CASCADE;
DROP TABLE IF EXISTS safeqr.geolocation CASCADE;
DROP TABLE IF EXISTS safeqr.email CASCADE;
DROP TABLE IF EXISTS safeqr.sms CASCADE;
DROP TABLE IF EXISTS safeqr.phone CASCADE;
DROP TABLE IF EXISTS safeqr.text CASCADE;
DROP TABLE IF EXISTS safeqr.url CASCADE;
DROP TABLE IF EXISTS safeqr.scan_bookmark CASCADE;
DROP TABLE IF EXISTS safeqr.scan_history CASCADE;
DROP TABLE IF EXISTS safeqr.qr_code CASCADE;
DROP TABLE IF EXISTS safeqr.qr_code_types CASCADE;
DROP TABLE IF EXISTS safeqr."user" CASCADE;

96
sql/Dummy_data.sql Normal file
View File

@@ -0,0 +1,96 @@
INSERT INTO safeqr."user" (
id,
cognitoid,
firstname,
lastname,
email,
source,
password,
salt,
cognito_id,
first_name,
last_name
) VALUES (
'test-unique-id',
'test-cognito-id',
'Test',
'User',
'test.user@example.com',
'test-source',
'test-password-hash',
'test-salt',
NULL,
NULL,
NULL
);
-- Insert into QR_Code_Types table
-- Insert additional QR code types into the qr_code_types table
INSERT INTO safeqr.qr_code_types (type, description, prefix, table_name) VALUES
('URL', 'Uniform Resource Locator', 'http://', 'url'),
('URL', 'Uniform Resource Locator', 'https://', 'url'),
('EMAIL', 'Email Address', 'mailto:', 'email'),
('PHONE', 'Phone Number', 'tel:', 'phone'),
('SMS', 'Short Message Service', 'smsto:', 'sms'),
('GEOLOCATION', 'Geographic Location', 'geo:', 'geolocation'),
('WIFI', 'Wireless Network Configuration', 'WIFI:', 'wifi'),
('BITCOIN', 'Cryptocurrency Address', 'bitcoin:', 'bitcoin'),
('VCARD', 'Virtual Contact File', 'BEGIN:VCARD', 'vcard');
-- Insert into QR_Code table
INSERT INTO safeqr.qr_code (id, qr_code_type_id, user_id, contents, created_at) VALUES
(gen_random_uuid(), 1, 'test-unique-id', 'http://example.com', CURRENT_TIMESTAMP),
(gen_random_uuid(), 2, NULL, 'https://example.com', CURRENT_TIMESTAMP),
(gen_random_uuid(), 3, 'test-unique-id', 'mailto:test@example.com', CURRENT_TIMESTAMP);
-- Insert into Scan_History table
INSERT INTO safeqr.scan_history (qr_code_id, user_id) VALUES
((SELECT id FROM safeqr.qr_code LIMIT 1), 'test-unique-id'),
((SELECT id FROM safeqr.qr_code LIMIT 1 OFFSET 1), 'test-unique-id'),
((SELECT id FROM safeqr.qr_code LIMIT 1 OFFSET 2), 'test-unique-id');
-- Insert into Scan_Bookmark table
INSERT INTO safeqr.scan_bookmark (qr_code_id, user_id, active) VALUES
((SELECT id FROM safeqr.qr_code LIMIT 1), 'test-unique-id', 'ACTIVE'),
((SELECT id FROM safeqr.qr_code LIMIT 1 OFFSET 1), 'test-unique-id', 'ACTIVE'),
((SELECT id FROM safeqr.qr_code LIMIT 1 OFFSET 2), 'test-unique-id', 'DELETED');
-- Insert into URL table
INSERT INTO safeqr.url (id, qr_code_id, url, query, fragment) VALUES
(gen_random_uuid(), (SELECT id FROM safeqr.qr_code WHERE contents LIKE 'http://%' LIMIT 1), 'http://example.com', 'key=value', 'fragment'),
(gen_random_uuid(), (SELECT id FROM safeqr.qr_code WHERE contents LIKE 'https://%' LIMIT 1), 'https://example.com', 'key=value', 'fragment');
-- Insert into Text table
INSERT INTO safeqr.text (id, qr_code_id, text) VALUES
(gen_random_uuid(), (SELECT id FROM safeqr.qr_code WHERE contents = 'Some text' LIMIT 1), 'Some example text');
-- Insert into Phone table
INSERT INTO safeqr.phone (id, qr_code_id, phone) VALUES
(gen_random_uuid(), (SELECT id FROM safeqr.qr_code LIMIT 1), '+1234567890');
-- Insert into SMS table
INSERT INTO safeqr.sms (id, qr_code_id, phone, message) VALUES
(gen_random_uuid(), (SELECT id FROM safeqr.qr_code LIMIT 1), '+1234567890', 'This is a test SMS message.');
-- Insert into Email table
INSERT INTO safeqr.email (id, qr_code_id, email, title, message) VALUES
(gen_random_uuid(), (SELECT id FROM safeqr.qr_code WHERE contents LIKE 'mailto:%' LIMIT 1), 'test@example.com', 'Test Email', 'This is a test email body.');
-- Insert into GeoLocation table
INSERT INTO safeqr.geolocation (id, qr_code_id, latitude, longitude) VALUES
(gen_random_uuid(), (SELECT id FROM safeqr.qr_code LIMIT 1), 37.7749, -122.4194);
-- Insert into Wifi table
INSERT INTO safeqr.wifi (id, qr_code_id, ssid, password, encryption, hidden) VALUES
(gen_random_uuid(), (SELECT id FROM safeqr.qr_code LIMIT 1), 'TestSSID', 'password123', 'WPA2', FALSE);
-- Insert into Bitcoin table
INSERT INTO safeqr.bitcoin (id, qr_code_id, address, amount, message) VALUES
(gen_random_uuid(), (SELECT id FROM safeqr.qr_code LIMIT 1), '1A1zP1eP5QGefi2DMPTfTL5SLmv7DivfNa', 5000000000, 'Test Bitcoin transaction');
-- Insert into VCard table
INSERT INTO safeqr.vcard (id, qr_code_id, version, name, organisation, title, address, tel_work, tel_cell, email, url) VALUES
(gen_random_uuid(), (SELECT id FROM safeqr.qr_code LIMIT 1), '4.0', 'John Doe', 'Example Corp', 'Developer', '1234 Elm St, Springfield, IL', '+1234567890', '+0987654321', 'johndoe@example.com', 'http://example.com');