more sql
This commit is contained in:
parent
a9d5f32f6b
commit
109fb46950
@ -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;
|
||||
|
Loading…
Reference in New Issue
Block a user