-- Database generated with pgModeler (PostgreSQL Database Modeler). -- pgModeler version: 0.9.2-beta -- PostgreSQL version: 9.6 -- Project Site: pgmodeler.io -- Model Author: --- -- Database creation must be done outside a multicommand file. -- These commands were put in this file only as a convenience. -- -- object: account_test | type: DATABASE -- -- -- DROP DATABASE IF EXISTS account_test; -- CREATE DATABASE account_test -- ENCODING = 'UTF8' -- LC_COLLATE = 'C' -- LC_CTYPE = 'C'; -- -- ddl-end -- -- -- object: public.config | type: TABLE -- DROP TABLE IF EXISTS public.config CASCADE; CREATE TABLE public.config ( application uuid NOT NULL, config_key varchar(100) NOT NULL, config_key_account uuid NOT NULL, config_key_group varchar(200), config_value varchar(200), CONSTRAINT config_pk PRIMARY KEY (application,config_key,config_key_account) ); -- ddl-end -- -- object: public.application_role | type: TABLE -- DROP TABLE IF EXISTS public.application_role CASCADE; CREATE TABLE public.application_role ( id uuid NOT NULL, application uuid NOT NULL, role_name character varying(80) NOT NULL, role_description character varying(200) NOT NULL, CONSTRAINT application_role_pk PRIMARY KEY (id), CONSTRAINT application_role_name_uidx UNIQUE (application,role_name) ); -- ddl-end -- -- object: public.account | type: TABLE -- DROP TABLE IF EXISTS public.account CASCADE; CREATE TABLE public.account ( id uuid NOT NULL, username character varying(32) NOT NULL, emailaddress character varying(200) NOT NULL, firstname character varying(100) NOT NULL, lastname character varying(100) NOT NULL, status character varying(10) NOT NULL DEFAULT 'NEW', created_on timestamp with time zone NOT NULL DEFAULT timezone('utc'::text, now()), created_by character varying(32) NOT NULL, last_updated_on timestamp with time zone NOT NULL DEFAULT timezone('utc'::text, now()), last_updated_by character varying(32) NOT NULL, CONSTRAINT pk_account PRIMARY KEY (id), CONSTRAINT uidx_username UNIQUE (username) ); -- ddl-end -- -- object: public.account_history | type: TABLE -- DROP TABLE IF EXISTS public.account_history CASCADE; CREATE TABLE public.account_history ( id uuid NOT NULL, account_id uuid NOT NULL, message character varying(200), failure_count integer NOT NULL DEFAULT 0, status character varying(20) NOT NULL, last_updated_on timestamp with time zone NOT NULL DEFAULT timezone('utc'::text, now()), last_updated_by character varying(32) NOT NULL, CONSTRAINT pk_account_history PRIMARY KEY (id) ); -- ddl-end -- -- object: public.account_role | type: TABLE -- DROP TABLE IF EXISTS public.account_role CASCADE; CREATE TABLE public.account_role ( account uuid NOT NULL, account_role uuid NOT NULL, CONSTRAINT pk_account_role PRIMARY KEY (account,account_role) ); -- ddl-end -- -- object: public.application_permission | type: TABLE -- DROP TABLE IF EXISTS public.application_permission CASCADE; CREATE TABLE public.application_permission ( id uuid NOT NULL, application uuid NOT NULL, permission_name character varying(80) NOT NULL, permission_description character varying(200) NOT NULL, CONSTRAINT pk_application_permission PRIMARY KEY (id), CONSTRAINT application_permission_name_uidx UNIQUE (application,permission_name) ); -- ddl-end -- -- object: public.role_permission | type: TABLE -- DROP TABLE IF EXISTS public.role_permission CASCADE; CREATE TABLE public.role_permission ( application_role uuid NOT NULL, role_permission uuid NOT NULL, CONSTRAINT pk_role_permission_role_permission_name PRIMARY KEY (application_role,role_permission) ); -- ddl-end -- -- object: public.mail_template | type: TABLE -- DROP TABLE IF EXISTS public.mail_template CASCADE; CREATE TABLE public.mail_template ( template_name character varying(40) NOT NULL, template_value text NOT NULL, CONSTRAINT mail_template_pk PRIMARY KEY (template_name) ); -- ddl-end -- -- object: public.application | type: TABLE -- DROP TABLE IF EXISTS public.application CASCADE; CREATE TABLE public.application ( id uuid NOT NULL, application_name varchar(200) NOT NULL, CONSTRAINT application_pk PRIMARY KEY (id) ); -- ddl-end -- -- -- object: "uuid-ossp" | type: EXTENSION -- -- -- DROP EXTENSION IF EXISTS "uuid-ossp" CASCADE; -- CREATE EXTENSION "uuid-ossp" -- WITH SCHEMA public; -- -- ddl-end -- -- -- object: public.account_login | type: TABLE -- DROP TABLE IF EXISTS public.account_login CASCADE; CREATE TABLE public.account_login ( id uuid NOT NULL DEFAULT uuid_generate_v4(), account uuid NOT NULL, account_password varchar(200) NOT NULL, last_login timestamptz, last_failed_login timestamptz, failure_count integer NOT NULL DEFAULT 0, password_reset_ongoing boolean NOT NULL DEFAULT false, password_reset_valid_to timestamptz, password_reset_hash varchar(200), created_on timestamptz NOT NULL DEFAULT timezone('utc'::text, now()), created_by varchar(32) NOT NULL, last_updated_on timestamptz NOT NULL DEFAULT timezone('utc'::text, now()), last_updated_by varchar(32) NOT NULL, CONSTRAINT account_login_pk PRIMARY KEY (id), CONSTRAINT account_login_uidx UNIQUE (account) ); -- ddl-end -- -- object: public.api_key | type: TABLE -- DROP TABLE IF EXISTS public.api_key CASCADE; CREATE TABLE public.api_key ( id uuid NOT NULL, account uuid NOT NULL, api_key varchar(200) NOT NULL, issued_on timestamptz NOT NULL DEFAULT timezone('utc'::text, now()), expiration smallint, expires_on timestamptz NOT NULL, CONSTRAINT api_key_pk PRIMARY KEY (id) ); -- ddl-end -- -- object: config_key_account_fk | type: CONSTRAINT -- -- ALTER TABLE public.config DROP CONSTRAINT IF EXISTS config_key_account_fk CASCADE; ALTER TABLE public.config ADD CONSTRAINT config_key_account_fk FOREIGN KEY (config_key_account) REFERENCES public.account (id) MATCH FULL ON DELETE NO ACTION ON UPDATE NO ACTION; -- ddl-end -- -- object: config_application_fk | type: CONSTRAINT -- -- ALTER TABLE public.config DROP CONSTRAINT IF EXISTS config_application_fk CASCADE; ALTER TABLE public.config ADD CONSTRAINT config_application_fk FOREIGN KEY (application) REFERENCES public.application (id) MATCH FULL ON DELETE NO ACTION ON UPDATE NO ACTION; -- ddl-end -- -- object: application_role_app_fk | type: CONSTRAINT -- -- ALTER TABLE public.application_role DROP CONSTRAINT IF EXISTS application_role_app_fk CASCADE; ALTER TABLE public.application_role ADD CONSTRAINT application_role_app_fk FOREIGN KEY (application) REFERENCES public.application (id) MATCH FULL ON DELETE NO ACTION ON UPDATE NO ACTION; -- ddl-end -- -- object: fk_account_history_username_fk | type: CONSTRAINT -- -- ALTER TABLE public.account_history DROP CONSTRAINT IF EXISTS fk_account_history_username_fk CASCADE; ALTER TABLE public.account_history ADD CONSTRAINT fk_account_history_username_fk FOREIGN KEY (account_id) REFERENCES public.account (id) MATCH SIMPLE ON DELETE NO ACTION ON UPDATE NO ACTION; -- ddl-end -- -- object: fk_account_role_account | type: CONSTRAINT -- -- ALTER TABLE public.account_role DROP CONSTRAINT IF EXISTS fk_account_role_account CASCADE; ALTER TABLE public.account_role ADD CONSTRAINT fk_account_role_account FOREIGN KEY (account) REFERENCES public.account (id) MATCH SIMPLE ON DELETE NO ACTION ON UPDATE NO ACTION; -- ddl-end -- -- object: fk_account_role_role_name | type: CONSTRAINT -- -- ALTER TABLE public.account_role DROP CONSTRAINT IF EXISTS fk_account_role_role_name CASCADE; ALTER TABLE public.account_role ADD CONSTRAINT fk_account_role_role_name FOREIGN KEY (account_role) REFERENCES public.application_role (id) MATCH SIMPLE ON DELETE NO ACTION ON UPDATE NO ACTION; -- ddl-end -- -- object: application_permission_app_fk | type: CONSTRAINT -- -- ALTER TABLE public.application_permission DROP CONSTRAINT IF EXISTS application_permission_app_fk CASCADE; ALTER TABLE public.application_permission ADD CONSTRAINT application_permission_app_fk FOREIGN KEY (application) REFERENCES public.application (id) MATCH FULL ON DELETE NO ACTION ON UPDATE NO ACTION; -- ddl-end -- -- object: fk_role_permission_application_role | type: CONSTRAINT -- -- ALTER TABLE public.role_permission DROP CONSTRAINT IF EXISTS fk_role_permission_application_role CASCADE; ALTER TABLE public.role_permission ADD CONSTRAINT fk_role_permission_application_role FOREIGN KEY (application_role) REFERENCES public.application_role (id) MATCH SIMPLE ON DELETE NO ACTION ON UPDATE NO ACTION; -- ddl-end -- -- object: fk_role_permission_role_permission | type: CONSTRAINT -- -- ALTER TABLE public.role_permission DROP CONSTRAINT IF EXISTS fk_role_permission_role_permission CASCADE; ALTER TABLE public.role_permission ADD CONSTRAINT fk_role_permission_role_permission FOREIGN KEY (role_permission) REFERENCES public.application_permission (id) MATCH SIMPLE ON DELETE NO ACTION ON UPDATE NO ACTION; -- ddl-end -- -- object: account_login_fk | type: CONSTRAINT -- -- ALTER TABLE public.account_login DROP CONSTRAINT IF EXISTS account_login_fk CASCADE; ALTER TABLE public.account_login ADD CONSTRAINT account_login_fk FOREIGN KEY (account) REFERENCES public.account (id) MATCH FULL ON DELETE NO ACTION ON UPDATE NO ACTION; -- ddl-end -- -- object: api_key_account_fk | type: CONSTRAINT -- -- ALTER TABLE public.api_key DROP CONSTRAINT IF EXISTS api_key_account_fk CASCADE; ALTER TABLE public.api_key ADD CONSTRAINT api_key_account_fk FOREIGN KEY (account) REFERENCES public.account (id) MATCH FULL ON DELETE NO ACTION ON UPDATE NO ACTION; -- ddl-end --