Merge branch 'feature/5' into feature/41
This commit is contained in:
commit
88c5c74c52
51 changed files with 1187 additions and 162 deletions
|
|
@ -118,15 +118,16 @@ ALTER TABLE public.authorities OWNER TO youyesyet;
|
|||
--
|
||||
|
||||
CREATE TABLE IF NOT EXISTS canvassers (
|
||||
id serial,
|
||||
username character varying(32) NOT NULL,
|
||||
fullname character varying(64) NOT NULL,
|
||||
elector_id integer,
|
||||
address_id integer NOT NULL,
|
||||
phone character varying(16),
|
||||
email character varying(128),
|
||||
authority_id character varying(32) NOT NULL,
|
||||
authorised boolean
|
||||
id serial,
|
||||
username character varying(32) NOT NULL,
|
||||
fullname character varying(64) NOT NULL,
|
||||
elector_id integer,
|
||||
address_id integer NOT NULL,
|
||||
phone character varying(16),
|
||||
email character varying(128),
|
||||
authority_id character varying(32) NOT NULL,
|
||||
introduced_by int references canvassers(id),
|
||||
authorised boolean
|
||||
);
|
||||
--;;
|
||||
|
||||
|
|
@ -534,6 +535,8 @@ ALTER TABLE ONLY canvassers
|
|||
ADD CONSTRAINT canvassers_elector_id_fkey FOREIGN KEY (elector_id) REFERENCES electors(id);
|
||||
--;;
|
||||
|
||||
create unique index canvassers_username_ix on canvassers (username);
|
||||
create unique index canvassers_email_ix on canvassers(email);
|
||||
|
||||
--
|
||||
-- Name: electors_address_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: youyesyet
|
||||
|
|
|
|||
|
|
@ -0,0 +1,17 @@
|
|||
-- this is just a teardown of everything set up in the corresponding .up.sql file
|
||||
|
||||
delete from roles where name = 'Expert';
|
||||
delete from roles where name = 'Administrator';
|
||||
delete from roles where name = 'Recruiter';
|
||||
delete from roles where name = 'Organiser';
|
||||
delete from roles where name = 'Editor';
|
||||
|
||||
alter table issues drop column content;
|
||||
alter table issues drop column current;
|
||||
|
||||
delete from issues where id = 'Currency';
|
||||
delete from issues where id = 'Monarchy';
|
||||
delete from issues where id = 'Defence';
|
||||
|
||||
delete from options where id = 'Yes';
|
||||
delete from options where id = 'No';
|
||||
|
|
@ -0,0 +1,58 @@
|
|||
|
||||
-- We don't explicitly instantiate the 'Canvasser' role since every user is
|
||||
-- deemed to be a canvasser.
|
||||
|
||||
|
||||
-- an 'Expert' is someone with expertise in one or more issues, who is
|
||||
-- trusted to discuss those issues in detail with electors.
|
||||
insert into roles (name) values ('Expert');
|
||||
|
||||
|
||||
-- an 'Administrator' is someone entitled to broadly alter reference data
|
||||
-- throughout the system.
|
||||
insert into roles (name) values ('Administrator');
|
||||
|
||||
|
||||
-- a 'Recruiter' is someone entitled to invite other people to become users
|
||||
-- ('Canvassers'). A Recruiter is entitled to lock the account of anyone they
|
||||
-- have recruited, recursively.
|
||||
insert into roles (name) values ('Recruiter');
|
||||
|
||||
|
||||
-- an 'Organiser' is someone who organises one or more local teams. An Organiser
|
||||
-- is entitled to exclude any Canvasser from any team they organise.
|
||||
insert into roles (name) values ('Organiser');
|
||||
|
||||
|
||||
-- an 'Editor' is someone entitled to add and edit issues.
|
||||
insert into roles (name) values ('Editor');
|
||||
|
||||
-- issue text is local; there may still in addition be a further link to more
|
||||
-- information, but the basic issue text should be part of the issue record.
|
||||
-- The text should fit on a phone screen without scrolling, so is reasonably
|
||||
-- short.
|
||||
alter table issues add column content varchar(1024);
|
||||
|
||||
-- an issue may be current or not current; when not current it is not deleted
|
||||
-- from the system but kept because it may become current again later. Only
|
||||
-- current issues are shown in the app. Typically not fewer than three and not
|
||||
-- more than about seven issues should be current at any time.
|
||||
alter table issues add column current boolean default false;
|
||||
|
||||
insert into issues (id, content, current) values ('Currency',
|
||||
'Scotland could keep the Pound, or use the Euro. But we could also set up a new currency of our own.',
|
||||
true);
|
||||
|
||||
insert into issues (id, content, current) values ('Monarchy',
|
||||
'Scotland could keep the Queen. This is an issue to be decided after independence.',
|
||||
true);
|
||||
|
||||
insert into issues (id, content, current) values ('Defence',
|
||||
'Scotland will not have nuclear weapons, and will probably not choose to engage in far-off wars. But we could remain members of NATO.',
|
||||
true);
|
||||
|
||||
|
||||
insert into options (id) values ('Yes');
|
||||
|
||||
insert into options (id) values ('No');
|
||||
|
||||
11
resources/migrations/20170415102900-core-views.down.sql
Normal file
11
resources/migrations/20170415102900-core-views.down.sql
Normal file
|
|
@ -0,0 +1,11 @@
|
|||
drop view if exists roles_by_canvasser;
|
||||
|
||||
drop view if exists teams_by_canvasser;
|
||||
|
||||
drop view if exists canvassers_by_team;
|
||||
|
||||
drop view if exists canvassers_by_introducer;
|
||||
|
||||
drop view if exists teams_by_organiser;
|
||||
|
||||
drop view if exists organisers_by_team;
|
||||
59
resources/migrations/20170415102900-core-views.up.sql
Normal file
59
resources/migrations/20170415102900-core-views.up.sql
Normal file
|
|
@ -0,0 +1,59 @@
|
|||
|
||||
create view roles_by_canvasser as
|
||||
select canvassers.id as canvasser, roles.name
|
||||
from roles, rolememberships, canvassers
|
||||
where roles.id = rolememberships.role_id
|
||||
and canvassers.id = rolememberships.canvasser_id
|
||||
and canvassers.authorised = true;
|
||||
|
||||
create view teams_by_canvasser as
|
||||
select canvassers.id as canvasser, teams.id, teams.name, teams.latitude, teams.longitude
|
||||
from teams, teammemberships, canvassers
|
||||
where teams.id = teammemberships.team_id
|
||||
and canvassers.id = teammemberships.canvasser_id;
|
||||
|
||||
create view canvassers_by_team as
|
||||
select teams.id as team,
|
||||
canvassers.id,
|
||||
canvassers.username,
|
||||
canvassers.fullname,
|
||||
canvassers.email,
|
||||
canvassers.phone
|
||||
from teams, teammemberships, canvassers
|
||||
where teams.id = teammemberships.team_id
|
||||
and canvassers.id = teammemberships.canvasser_id
|
||||
and canvassers.authorised = true;
|
||||
|
||||
create view canvassers_by_introducer as
|
||||
select introducers.id as introducer,
|
||||
canvassers.id as canvasser,
|
||||
canvassers.username,
|
||||
canvassers.fullname,
|
||||
canvassers.email,
|
||||
canvassers.phone,
|
||||
canvassers.authorised
|
||||
from canvassers, canvassers as introducers
|
||||
where introducers.id = canvassers.introduced_by;
|
||||
|
||||
create view teams_by_organiser as
|
||||
select canvassers.id as organiser,
|
||||
teams.id,
|
||||
teams.name,
|
||||
teams.latitude,
|
||||
teams.longitude
|
||||
from teams, teamorganiserships, canvassers
|
||||
where teams.id = teamorganiserships.team_id
|
||||
and canvassers.id = teamorganiserships.canvasser_id
|
||||
and canvassers.authorised = true;
|
||||
|
||||
create view organisers_by_team as
|
||||
select teams.id as team,
|
||||
canvassers.id,
|
||||
canvassers.username,
|
||||
canvassers.fullname,
|
||||
canvassers.email,
|
||||
canvassers.phone
|
||||
from teams, teamorganiserships, canvassers
|
||||
where teams.id = teamorganiserships.team_id
|
||||
and canvassers.id = teamorganiserships.canvasser_id
|
||||
and canvassers.authorised = true;
|
||||
|
|
@ -34,7 +34,7 @@
|
|||
|
||||
CREATE TABLE IF NOT EXISTS dwellings (
|
||||
id serial NOT NULL primary key,
|
||||
address_id integer NOT NULL,
|
||||
address_id integer NOT NULL references addresses(id),
|
||||
sub_address varchar(16)
|
||||
);
|
||||
--;;
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue