265 lines
7.3 KiB
SQL
265 lines
7.3 KiB
SQL
-- Create schema if it doesn't exist
|
|
CREATE SCHEMA IF NOT EXISTS safeqr;
|
|
|
|
|
|
CREATE EXTENSION IF NOT EXISTS "uuid-ossp";
|
|
|
|
-- Create Enum for scan_history status
|
|
CREATE TYPE scan_status AS ENUM ('ACTIVE', 'INACTIVE');
|
|
|
|
-- safeqr."user" definition
|
|
|
|
-- Drop table
|
|
|
|
-- DROP TABLE safeqr."user";
|
|
|
|
CREATE TABLE safeqr."user" (
|
|
id varchar(255) NOT NULL,
|
|
"name" varchar(255) NULL,
|
|
email varchar(255) NULL,
|
|
"source" varchar(255) NULL,
|
|
date_created timestamptz DEFAULT now() NULL,
|
|
date_updated timestamptz DEFAULT now() NULL,
|
|
roles _text NULL,
|
|
status varchar(255) DEFAULT 'ACTIVE'::character varying NULL,
|
|
gm
|
|
|
|
-- safeqr.qr_code_types definition
|
|
|
|
-- Drop table
|
|
|
|
-- DROP TABLE safeqr.qr_code_types;
|
|
|
|
CREATE TABLE safeqr.qr_code_types (
|
|
id bigserial NOT NULL,
|
|
"type" varchar(255) NOT NULL,
|
|
description varchar(255) NULL,
|
|
prefix varchar(255) NULL,
|
|
table_name varchar(255) NULL,
|
|
CONSTRAINT qr_code_types_pkey PRIMARY KEY (id)
|
|
);
|
|
|
|
-- safeqr.qr_code definition
|
|
|
|
-- Drop table
|
|
|
|
-- DROP TABLE safeqr.qr_code;
|
|
|
|
CREATE TABLE safeqr.qr_code (
|
|
id uuid DEFAULT safeqr.uuid_generate_v4() NOT NULL,
|
|
qr_code_type_id int8 NULL,
|
|
user_id varchar(255) NULL,
|
|
contents text NULL,
|
|
created_at timestamptz DEFAULT CURRENT_TIMESTAMP NULL,
|
|
CONSTRAINT qr_code_pkey PRIMARY KEY (id),
|
|
CONSTRAINT qr_code_qr_code_type_id_fkey FOREIGN KEY (qr_code_type_id) REFERENCES safeqr.qr_code_types(id),
|
|
CONSTRAINT qr_code_user_id_fkey FOREIGN KEY (user_id) REFERENCES safeqr."user"(id)
|
|
);
|
|
|
|
-- safeqr.scan_history definition
|
|
|
|
-- Drop table
|
|
|
|
-- DROP TABLE safeqr.scan_history;
|
|
|
|
CREATE TABLE safeqr.scan_history (
|
|
id bigserial NOT NULL,
|
|
qr_code_id uuid NULL,
|
|
user_id varchar(255) NULL,
|
|
status varchar(255) DEFAULT 'ACTIVE'::safeqr.scan_status NULL,
|
|
date_created timestamptz DEFAULT CURRENT_TIMESTAMP NOT NULL,
|
|
date_updated timestamptz DEFAULT CURRENT_TIMESTAMP NOT NULL,
|
|
bookmarked bool DEFAULT false NULL,
|
|
CONSTRAINT scan_history_pkey PRIMARY KEY (id),
|
|
CONSTRAINT scan_history_fk FOREIGN KEY (qr_code_id) REFERENCES safeqr.qr_code(id) ON DELETE CASCADE ON UPDATE CASCADE
|
|
);
|
|
|
|
-- safeqr.scan_bookmark definition
|
|
|
|
-- Drop table
|
|
|
|
-- DROP TABLE safeqr.scan_bookmark;
|
|
|
|
CREATE TABLE safeqr.scan_bookmark (
|
|
id bigserial NOT NULL,
|
|
qr_code_id uuid NULL,
|
|
user_id varchar(255) NULL,
|
|
status varchar(255) DEFAULT 'ACTIVE'::safeqr.bookmark_status NULL,
|
|
date_created timestamptz DEFAULT CURRENT_TIMESTAMP NOT NULL,
|
|
date_updated timestamptz DEFAULT CURRENT_TIMESTAMP NOT NULL,
|
|
CONSTRAINT scan_bookmark_pkey PRIMARY KEY (id),
|
|
CONSTRAINT scan_bookmark_fk FOREIGN KEY (qr_code_id) REFERENCES safeqr.qr_code(id) ON DELETE CASCADE ON UPDATE CASCADE
|
|
);
|
|
|
|
-- safeqr.url definition
|
|
|
|
-- Drop table
|
|
|
|
-- DROP TABLE safeqr.url;
|
|
|
|
CREATE TABLE safeqr.url (
|
|
id uuid DEFAULT safeqr.uuid_generate_v4() NOT NULL,
|
|
qr_code_id uuid NULL,
|
|
"domain" text NULL,
|
|
subdomain text NULL,
|
|
top_level_domain text NULL,
|
|
query text NULL,
|
|
fragment text NULL,
|
|
redirect int4 DEFAULT 0 NULL,
|
|
"path" text NULL,
|
|
redirect_chain _text NULL,
|
|
hsts_header _text NULL,
|
|
ssl_stripping _bool NULL,
|
|
CONSTRAINT url_pkey PRIMARY KEY (id),
|
|
CONSTRAINT url_qr_code_id_fkey FOREIGN KEY (qr_code_id) REFERENCES safeqr.qr_code(id)
|
|
);
|
|
|
|
-- safeqr."text" definition
|
|
|
|
-- Drop table
|
|
|
|
-- DROP TABLE safeqr."text";
|
|
|
|
CREATE TABLE safeqr."text" (
|
|
id uuid DEFAULT safeqr.uuid_generate_v4() NOT NULL,
|
|
qr_code_id uuid NULL,
|
|
"text" varchar(2048) NULL,
|
|
CONSTRAINT text_pkey PRIMARY KEY (id),
|
|
CONSTRAINT text_fk FOREIGN KEY (qr_code_id) REFERENCES safeqr.qr_code(id) ON DELETE CASCADE ON UPDATE CASCADE
|
|
);
|
|
|
|
-- safeqr.phone definition
|
|
|
|
-- Drop table
|
|
|
|
-- DROP TABLE safeqr.phone;
|
|
|
|
CREATE TABLE safeqr.phone (
|
|
id uuid DEFAULT safeqr.uuid_generate_v4() NOT NULL,
|
|
qr_code_id uuid NULL,
|
|
phone text NULL,
|
|
CONSTRAINT phone_pkey PRIMARY KEY (id),
|
|
CONSTRAINT phone_fk FOREIGN KEY (qr_code_id) REFERENCES safeqr.qr_code(id) ON DELETE CASCADE ON UPDATE CASCADE
|
|
);
|
|
|
|
-- safeqr.sms definition
|
|
|
|
-- Drop table
|
|
|
|
-- DROP TABLE safeqr.sms;
|
|
|
|
CREATE TABLE safeqr.sms (
|
|
id uuid DEFAULT safeqr.uuid_generate_v4() NOT NULL,
|
|
qr_code_id uuid NULL,
|
|
phone text NULL,
|
|
message text NULL,
|
|
CONSTRAINT sms_pkey PRIMARY KEY (id),
|
|
CONSTRAINT sms_fk FOREIGN KEY (qr_code_id) REFERENCES safeqr.qr_code(id)
|
|
);
|
|
|
|
-- 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)
|
|
);
|
|
|
|
-- safeqr.gmail_emails definition
|
|
|
|
-- Drop table
|
|
|
|
-- DROP TABLE safeqr.gmail_emails;
|
|
|
|
CREATE TABLE safeqr.gmail_emails (
|
|
user_id varchar NOT NULL,
|
|
subject text NULL,
|
|
email_date timestamptz NULL,
|
|
date_created timestamptz DEFAULT CURRENT_TIMESTAMP NULL,
|
|
message_id varchar NOT NULL,
|
|
history_id int8 NULL,
|
|
id uuid DEFAULT safeqr.uuid_generate_v4() NOT NULL,
|
|
CONSTRAINT gmail_pk PRIMARY KEY (id),
|
|
CONSTRAINT gmail_unique UNIQUE (user_id, message_id),
|
|
CONSTRAINT gmail_user_fk FOREIGN KEY (user_id) REFERENCES safeqr."user"(id) ON DELETE CASCADE ON UPDATE CASCADE
|
|
);
|
|
|
|
-- safeqr.gmail_urls definition
|
|
|
|
-- Drop table
|
|
|
|
-- DROP TABLE safeqr.gmail_urls;
|
|
|
|
CREATE TABLE safeqr.gmail_urls (
|
|
gmail_id uuid NOT NULL,
|
|
image_url text NOT NULL,
|
|
decoded_content varchar NULL,
|
|
qr_code_id uuid NOT NULL,
|
|
id uuid DEFAULT safeqr.uuid_generate_v4() NOT NULL,
|
|
CONSTRAINT gmail_urls_pk PRIMARY KEY (id),
|
|
CONSTRAINT gmail_urls_unique UNIQUE (gmail_id, image_url, decoded_content),
|
|
CONSTRAINT gmail_urls_gmail_emails_fk FOREIGN KEY (gmail_id) REFERENCES safeqr.gmail_emails(id) ON DELETE CASCADE ON UPDATE CASCADE,
|
|
CONSTRAINT gmail_urls_qr_code_fk FOREIGN KEY (qr_code_id) REFERENCES safeqr.qr_code(id) ON DELETE CASCADE ON UPDATE CASCADE
|
|
);
|
|
|
|
-- safeqr.gmail_cid definition
|
|
|
|
-- Drop table
|
|
|
|
-- DROP TABLE safeqr.gmail_cid;
|
|
|
|
CREATE TABLE safeqr.gmail_cid (
|
|
gmail_id uuid NOT NULL,
|
|
cid varchar NOT NULL,
|
|
attachment_id text NOT NULL,
|
|
decoded_content text NOT NULL,
|
|
qr_code_id uuid NOT NULL,
|
|
id uuid DEFAULT safeqr.uuid_generate_v4() NOT NULL,
|
|
CONSTRAINT gmail_cid_pk PRIMARY KEY (id),
|
|
CONSTRAINT gmail_cid_unique UNIQUE (gmail_id, cid, decoded_content),
|
|
CONSTRAINT gmail_cid_gmail_emails_fk FOREIGN KEY (gmail_id) REFERENCES safeqr.gmail_emails(id) ON DELETE CASCADE ON UPDATE CASCADE,
|
|
CONSTRAINT gmail_cid_qr_code_fk FOREIGN KEY (qr_code_id) REFERENCES safeqr.qr_code(id) ON DELETE CASCADE ON UPDATE CASCADE
|
|
); |