From 109fb46950802f582d7a320e642c84484903073e Mon Sep 17 00:00:00 2001 From: Martin Donnelly Date: Mon, 4 Apr 2016 14:02:15 +0100 Subject: [PATCH] more sql --- scripts/obrand.sql | 578 +++++++++++++++++++++++++++++---------------- 1 file changed, 368 insertions(+), 210 deletions(-) diff --git a/scripts/obrand.sql b/scripts/obrand.sql index ea1930e..62cecc1 100644 --- a/scripts/obrand.sql +++ b/scripts/obrand.sql @@ -61,111 +61,216 @@ DROP TABLE IF EXISTS "master_beacons"; DROP TABLE IF EXISTS "pages"; -CREATE TABLE "logins" ( - "id" serial NOT NULL, - "username" varchar(100) NOT NULL UNIQUE, - "email" varchar(150) NOT NULL UNIQUE, - "password_hash" varchar(78) NOT NULL, - "password_reset_token" varchar(128) UNIQUE, - "uid" varchar(22) UNIQUE, - CONSTRAINT logins_pk PRIMARY KEY ("id") -) WITH ( - OIDS=FALSE -); -CREATE TABLE "profile" ( - "id" serial NOT NULL, - "uid" varchar(22) NOT NULL, - "forename" varchar(75) NOT NULL, - "surname" varchar(75) NOT NULL, - "gender" int NOT NULL, - "dob" DATE NOT NULL, - "bio" TEXT NOT NULL, - "member_of" varchar(22), - CONSTRAINT profile_pk PRIMARY KEY ("id") -) WITH ( - OIDS=FALSE -); +-- Table: public.billing +-- DROP TABLE public.billing; - -CREATE TABLE "company" ( - "id" serial NOT NULL, - "cid" varchar(22) not null, - "company_name" varchar(100) NOT NULL, - "address1" varchar(150) NOT NULL, - "address2" varchar(150), - "address3" varchar(150), - "town" varchar(150) NOT NULL, - "county" varchar(150), - "postcode" varchar(12) NOT NULL, - "country" int , - "pcontact" varchar(20) NOT NULL, - "ocontact" varchar(20), - "mobile" varchar(20) , - "email" varchar(150) NOT NULL, - CONSTRAINT company_pk PRIMARY KEY ("id") -) WITH ( - OIDS=FALSE -); - - - -CREATE TABLE "venue" ( - "id" serial NOT NULL, - "venue_name" varchar(100) NOT NULL, - "address1" varchar(150) NOT NULL, - "address2" varchar(150), - "address3" varchar(150), - "town" varchar(150) NOT NULL, - "county" varchar(150) , - "postcode" varchar(12) NOT NULL, - "country" int , - "pcontact" varchar(20) NOT NULL, - "ocontact" varchar(20) , - "mobile" varchar(20) , - "email" varchar(150) NOT NULL, - "company_id" int NOT NULL, - CONSTRAINT venue_pk PRIMARY KEY ("id") -) WITH ( - OIDS=FALSE -); - - - -CREATE TABLE "billing" ( - "id" serial NOT NULL, - "company_id" int NOT NULL, - CONSTRAINT billing_pk PRIMARY KEY ("id") -) WITH ( - OIDS=FALSE -); - - - -CREATE TABLE "master_beacons" ( - "id" bigint NOT NULL, - "uid" uuid NOT NULL, - CONSTRAINT master_beacons_pk PRIMARY KEY ("id") -) WITH ( - OIDS=FALSE -); - -CREATE TABLE "pages" +CREATE TABLE public.billing ( - id serial NOT NULL,, - cid VARCHAR(22), - vid VARCHAR(22), - pid VARCHAR(22), - content INTEGER, - title VARCHAR(100) NOT NULL, - data JSONB NOT NULL, - CONSTRAINT pages_pk PRIMARY KEY ("id") -) WITH ( + id integer NOT NULL DEFAULT nextval('billing_id_seq'::regclass), + company_id integer NOT NULL, + CONSTRAINT billing_pk PRIMARY KEY (id), + CONSTRAINT billing_fk0 FOREIGN KEY (company_id) + REFERENCES public.company (id) MATCH SIMPLE + ON UPDATE NO ACTION ON DELETE NO ACTION +) +WITH ( OIDS=FALSE ); +ALTER TABLE public.billing + OWNER TO postgres; +GRANT SELECT, UPDATE, INSERT ON TABLE public.billing TO public; +GRANT ALL ON TABLE public.billing TO postgres; + + + + +-- Table: public.company + +-- DROP TABLE public.company; + +CREATE TABLE public.company +( + id integer NOT NULL DEFAULT nextval('company_id_seq'::regclass), + cid character varying(22) NOT NULL, + company_name character varying(100) NOT NULL, + address1 character varying(150) NOT NULL, + address2 character varying(150), + address3 character varying(150), + town character varying(150) NOT NULL, + county character varying(150), + postcode character varying(12) NOT NULL, + country integer, + pcontact character varying(20) NOT NULL, + ocontact character varying(20), + mobile character varying(20), + email character varying(150) NOT NULL, + CONSTRAINT company_pk PRIMARY KEY (id) +) +WITH ( + OIDS=FALSE +); +ALTER TABLE public.company + OWNER TO postgres; +GRANT SELECT, UPDATE, INSERT ON TABLE public.company TO public; +GRANT ALL ON TABLE public.company TO postgres; + + + + + +-- Table: public.logins + +-- DROP TABLE public.logins; + +CREATE TABLE public.logins +( + id integer NOT NULL DEFAULT nextval('logins_id_seq'::regclass), + username character varying(100) NOT NULL, + email character varying(150) NOT NULL, + password_hash character varying(78) NOT NULL, + password_reset_token character varying(128), + uid character varying(22), + CONSTRAINT logins_pk PRIMARY KEY (id), + CONSTRAINT logins_email_key UNIQUE (email), + CONSTRAINT logins_password_reset_token_key UNIQUE (password_reset_token), + CONSTRAINT logins_uid_key UNIQUE (uid), + CONSTRAINT logins_username_key UNIQUE (username) +) +WITH ( + OIDS=FALSE +); +ALTER TABLE public.logins + OWNER TO postgres; +GRANT SELECT, UPDATE, INSERT ON TABLE public.logins TO public; +GRANT ALL ON TABLE public.logins TO postgres; +GRANT SELECT, UPDATE, INSERT, DELETE, TRIGGER ON TABLE public.logins TO obrand; + + + + +-- Table: public.master_beacons + +-- DROP TABLE public.master_beacons; + +CREATE TABLE public.master_beacons +( + id bigint NOT NULL, + uid uuid NOT NULL, + CONSTRAINT master_beacons_pk PRIMARY KEY (id) +) +WITH ( + OIDS=FALSE +); +ALTER TABLE public.master_beacons + OWNER TO postgres; +GRANT SELECT, UPDATE, INSERT ON TABLE public.master_beacons TO public; +GRANT ALL ON TABLE public.master_beacons TO postgres; + + + + + +-- Table: public.pages + +-- DROP TABLE public.pages; + +CREATE TABLE public.pages +( + id integer NOT NULL DEFAULT nextval('pages_id_seq'::regclass), + cid character varying(22), + vid character varying(22), + pid character varying(22), + content integer, + title character varying(100) NOT NULL, + data json NOT NULL, + CONSTRAINT pages_pk PRIMARY KEY (id) +) +WITH ( + OIDS=FALSE +); +ALTER TABLE public.pages + OWNER TO postgres; +GRANT SELECT, UPDATE, INSERT ON TABLE public.pages TO public; +GRANT ALL ON TABLE public.pages TO postgres; + + + + +-- Table: public.profile + +-- DROP TABLE public.profile; + +CREATE TABLE public.profile +( + id integer NOT NULL DEFAULT nextval('profile_id_seq'::regclass), + uid character varying(22) NOT NULL, + forename character varying(75) NOT NULL, + surname character varying(75) NOT NULL, + gender integer NOT NULL, + dob date NOT NULL, + bio text NOT NULL, + member_of character varying(22), + CONSTRAINT profile_pk PRIMARY KEY (id), + CONSTRAINT profile_fk0 FOREIGN KEY (uid) + REFERENCES public.logins (uid) MATCH SIMPLE + ON UPDATE NO ACTION ON DELETE NO ACTION +) +WITH ( + OIDS=FALSE +); +ALTER TABLE public.profile + OWNER TO postgres; +GRANT SELECT, UPDATE, INSERT ON TABLE public.profile TO public; +GRANT ALL ON TABLE public.profile TO postgres; + + + + +-- + + + +-- Table: public.venue + +-- DROP TABLE public.venue; + +CREATE TABLE public.venue +( + id integer NOT NULL DEFAULT nextval('venue_id_seq'::regclass), + venue_name character varying(100) NOT NULL, + address1 character varying(150) NOT NULL, + address2 character varying(150), + address3 character varying(150), + town character varying(150) NOT NULL, + county character varying(150), + postcode character varying(12) NOT NULL, + country integer, + pcontact character varying(20) NOT NULL, + ocontact character varying(20), + mobile character varying(20), + email character varying(150) NOT NULL, + company_id integer NOT NULL, + CONSTRAINT venue_pk PRIMARY KEY (id), + CONSTRAINT venue_fk0 FOREIGN KEY (company_id) + REFERENCES public.company (id) MATCH SIMPLE + ON UPDATE NO ACTION ON DELETE NO ACTION +) +WITH ( + OIDS=FALSE +); +ALTER TABLE public.venue + OWNER TO postgres; +GRANT SELECT, UPDATE, INSERT ON TABLE public.venue TO public; +GRANT ALL ON TABLE public.venue TO postgres; + + + + +-- @@ -189,71 +294,120 @@ grant select, update on pages_pk to obrand; --- Function Builder ---DROP FUNCTION insert_user(character varying,character varying,character varying,character varying); -DROP FUNCTION upsert_profile; -CREATE OR REPLACE FUNCTION insert_user( _username VARCHAR(100), _email VARCHAR(150), - _passwordHash VARCHAR(78), _uid VARCHAR(22)) - RETURNS VOID AS -$$ +-- functions + + +-- Function: public.getaccountdetails(character varying) + +-- DROP FUNCTION public.getaccountdetails(character varying); + +CREATE OR REPLACE FUNCTION public.getaccountdetails(IN _uid character varying) + RETURNS TABLE(id integer, email character varying, uid character varying, forename character varying, surname character varying, member_of character varying) AS +$BODY$ + +BEGIN + + + RETURN QUERY + SELECT + + logins.id, + logins.email, + logins.uid, + profile.forename, + profile.surname, + profile.member_of + FROM logins + LEFT JOIN profile ON profile.uid = logins.uid + WHERE logins.uid = _uid; + + +END; +$BODY$ + LANGUAGE plpgsql VOLATILE + COST 100 + ROWS 1000; +ALTER FUNCTION public.getaccountdetails(character varying) + OWNER TO postgres; + + +-- + + +-- Function: public.insert_user(character varying, character varying, character varying, character varying) + +-- DROP FUNCTION public.insert_user(character varying, character varying, character varying, character varying); + +CREATE OR REPLACE FUNCTION public.insert_user( + _username character varying, + _email character varying, + _passwordhash character varying, + _uid character varying) + RETURNS void AS +$BODY$ BEGIN INSERT into logins(username, email, password_hash, uid) Values(_username,_email,_passwordHash,_uid); END; -$$ -LANGUAGE plpgsql; - - -- - -CREATE OR REPLACE FUNCTION upsert_profile(_uid VARCHAR(22), _forename VARCHAR(75), _surname VARCHAR(75), - _gender INTEGER, _dob DATE, _bio TEXT) - RETURNS VOID AS -$$ - -BEGIN - WITH upsert AS (UPDATE profile - SET forename = _forename, surname = _surname, gender = _gender, dob = _dob, bio = _bio - WHERE uid = _uid - RETURNING *) - INSERT INTO profile (uid, forename, surname, gender, dob, bio) SELECT - _uid, - _forename, - _surname, - _gender, - _dob, - _bio - WHERE NOT EXISTS(SELECT * - FROM upsert); +$BODY$ + LANGUAGE plpgsql VOLATILE + COST 100; +ALTER FUNCTION public.insert_user(character varying, character varying, character varying, character varying) + OWNER TO postgres; -END; -$$ -LANGUAGE plpgsql; -- -; +-- Function: public.makememberof(character varying, character varying) ---DROP FUNCTION upsert_profile(character varying,character varying,character varying,integer,date,text) ; +-- DROP FUNCTION public.makememberof(character varying, character varying); -CREATE OR REPLACE FUNCTION upsert_company( - _cid VARCHAR(22), - _company_name VARCHAR(100), - _address1 VARCHAR(150), - _address2 VARCHAR(150), - _address3 VARCHAR(150), - _town VARCHAR(150), - _county VARCHAR(150), - _postcode VARCHAR(12), - _country INTEGER, - _pcontact VARCHAR(20), - _ocontact VARCHAR(20), - _mobile VARCHAR(20), - _email VARCHAR(150)) +CREATE OR REPLACE FUNCTION public.makememberof( + _uid character varying, + _cid character varying) + RETURNS void AS +$BODY$ - RETURNS VOID AS -$$ +BEGIN + UPDATE profile SET member_of = _cid WHERE uid = _uid; + + +END; +$BODY$ + LANGUAGE plpgsql VOLATILE + COST 100; +ALTER FUNCTION public.makememberof(character varying, character varying) + OWNER TO postgres; + + +-- + + + + + +-- Function: public.upsert_company(character varying, character varying, character varying, character varying, character varying, character varying, character varying, character varying, integer, character varying, character varying, character varying, character varying) + +-- DROP FUNCTION public.upsert_company(character varying, character varying, character varying, character varying, character varying, character varying, character varying, character varying, integer, character varying, character varying, character varying, character varying); + +CREATE OR REPLACE FUNCTION public.upsert_company( + _cid character varying, + _company_name character varying, + _address1 character varying, + _address2 character varying, + _address3 character varying, + _town character varying, + _county character varying, + _postcode character varying, + _country integer, + _pcontact character varying, + _ocontact character varying, + _mobile character varying, + _email character varying) + RETURNS void AS +$BODY$ BEGIN WITH upsert AS (UPDATE company @@ -306,74 +460,32 @@ BEGIN END; -$$ -LANGUAGE plpgsql; +$BODY$ + LANGUAGE plpgsql VOLATILE + COST 100; +ALTER FUNCTION public.upsert_company(character varying, character varying, character varying, character varying, character varying, character varying, character varying, character varying, integer, character varying, character varying, character varying, character varying) + OWNER TO postgres; + -- -; -CREATE OR REPLACE FUNCTION getAccountDetails( - _uid VARCHAR(22)) +-- Function: public.upsert_page(character varying, character varying, character varying, integer, character varying, json) - RETURNS TABLE(id INT, email VARCHAR(150), uid VARCHAR(22), forename VARCHAR(75), surname VARCHAR(75), member_of VARCHAR(22)) +-- DROP FUNCTION public.upsert_page(character varying, character varying, character varying, integer, character varying, json); -AS -$$ - -BEGIN - - RETURN QUERY - SELECT - - logins.id, - logins.email, - logins.uid, - profile.forename, - profile.surname, - profile.member_of - FROM logins - LEFT JOIN profile ON profile.uid = logins.uid - WHERE logins.uid = _uid; - -END; -$$ -LANGUAGE plpgsql; - - - --- - -; - -CREATE OR REPLACE FUNCTION makeMemberOf(_uid VARCHAR(22), _cid VARCHAR(22)) - RETURNS VOID AS -$$ - -BEGIN - UPDATE profile - SET profile.member_of = _cid - WHERE profile.uid = _uid; - - -END; -$$ -LANGUAGE plpgsql; - - --- - - -; - - -CREATE OR REPLACE FUNCTION upsert_page(_cid VARCHAR(22), - _vid VARCHAR(22), _pid VARCHAR(22), _content INTEGER, _title VARCHAR(100), _data JSONB) - RETURNS VOID AS -$$ +CREATE OR REPLACE FUNCTION public.upsert_page( + _cid character varying, + _vid character varying, + _pid character varying, + _content integer, + _title character varying, + _data json) + RETURNS void AS +$BODY$ BEGIN WITH upsert AS (UPDATE pages @@ -392,5 +504,51 @@ BEGIN END; -$$ -LANGUAGE plpgsql; +$BODY$ + LANGUAGE plpgsql VOLATILE + COST 100; +ALTER FUNCTION public.upsert_page(character varying, character varying, character varying, integer, character varying, json) + OWNER TO postgres; + + + + +-- + + +-- Function: public.upsert_profile(character varying, character varying, character varying, integer, date, text) + +-- DROP FUNCTION public.upsert_profile(character varying, character varying, character varying, integer, date, text); + +CREATE OR REPLACE FUNCTION public.upsert_profile( + _uid character varying, + _forename character varying, + _surname character varying, + _gender integer, + _dob date, + _bio text) + RETURNS void AS +$BODY$ + +BEGIN + WITH upsert AS (UPDATE profile + SET forename = _forename, surname = _surname, gender = _gender, dob = _dob, bio = _bio + WHERE uid = _uid + RETURNING *) + INSERT INTO profile (uid, forename, surname, gender, dob, bio) SELECT + _uid, + _forename, + _surname, + _gender, + _dob, + _bio + WHERE NOT EXISTS(SELECT * + FROM upsert); + + +END; +$BODY$ + LANGUAGE plpgsql VOLATILE + COST 100; +ALTER FUNCTION public.upsert_profile(character varying, character varying, character varying, integer, date, text) + OWNER TO postgres;