This commit is contained in:
Martin Donnelly 2016-04-04 14:02:15 +01:00
parent a9d5f32f6b
commit 109fb46950

View File

@ -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;