Tactical commit; much progress but not ready for release.
This commit is contained in:
parent
fc2bd86cff
commit
0026218993
61 changed files with 2920 additions and 1031 deletions
|
|
@ -1,7 +1,7 @@
|
|||
------------------------------------------------------------------------
|
||||
-- File queries.sql
|
||||
--
|
||||
-- autogenerated by adl.to-hugsql-queries at 2018-07-05T10:14:16.954Z
|
||||
-- autogenerated by adl.to-hugsql-queries at 2018-07-07T08:09:48.253Z
|
||||
--
|
||||
-- See [Application Description
|
||||
-- Language](https://github.com/simon-brooke/adl).
|
||||
|
|
@ -45,6 +45,8 @@ returning id
|
|||
-- :doc creates a new canvasser record
|
||||
INSERT INTO canvassers (username,
|
||||
fullname,
|
||||
avatar,
|
||||
bio,
|
||||
elector_id,
|
||||
address_id,
|
||||
phone,
|
||||
|
|
@ -53,6 +55,8 @@ INSERT INTO canvassers (username,
|
|||
authorised)
|
||||
VALUES (:username,
|
||||
:fullname,
|
||||
:avatar,
|
||||
:bio,
|
||||
:elector_id,
|
||||
:address_id,
|
||||
:phone,
|
||||
|
|
@ -89,6 +93,20 @@ VALUES (:name,
|
|||
:gender)
|
||||
returning id
|
||||
|
||||
-- :name create-event! :! :n
|
||||
-- :doc creates a new event record
|
||||
INSERT INTO events (name,
|
||||
date,
|
||||
time,
|
||||
decription,
|
||||
cancelled)
|
||||
VALUES (:name,
|
||||
:date,
|
||||
:time,
|
||||
:decription,
|
||||
:cancelled)
|
||||
returning id
|
||||
|
||||
-- :name create-followupaction! :! :n
|
||||
-- :doc creates a new followupaction record
|
||||
INSERT INTO followupactions (request_id,
|
||||
|
|
@ -137,7 +155,7 @@ VALUES (:visit_id,
|
|||
:elector_id,
|
||||
:option_id,
|
||||
:locality)
|
||||
returning Id
|
||||
returning id
|
||||
|
||||
-- :name create-issue! :! :n
|
||||
-- :doc creates a new issue record
|
||||
|
|
@ -215,6 +233,11 @@ WHERE dwellings.id = :id
|
|||
DELETE FROM electors
|
||||
WHERE electors.id = :id
|
||||
|
||||
-- :name delete-event! :! :n
|
||||
-- :doc updates an existing event record
|
||||
DELETE FROM events
|
||||
WHERE events.id = :id
|
||||
|
||||
-- :name delete-followupaction! :! :n
|
||||
-- :doc updates an existing followupaction record
|
||||
DELETE FROM followupactions
|
||||
|
|
@ -238,7 +261,7 @@ WHERE genders.id = :id
|
|||
-- :name delete-intention! :! :n
|
||||
-- :doc updates an existing intention record
|
||||
DELETE FROM intentions
|
||||
WHERE intentions.Id = :Id
|
||||
WHERE intentions.id = :id
|
||||
|
||||
-- :name delete-issue! :! :n
|
||||
-- :doc updates an existing issue record
|
||||
|
|
@ -325,6 +348,15 @@ ORDER BY electors.name,
|
|||
electors.gender,
|
||||
electors.id
|
||||
|
||||
-- :name get-event :? :1
|
||||
-- :doc selects an existing event record
|
||||
SELECT * FROM events
|
||||
WHERE events.id = :id
|
||||
ORDER BY events.name,
|
||||
events.date,
|
||||
events.time,
|
||||
events.id
|
||||
|
||||
-- :name get-followupaction :? :1
|
||||
-- :doc selects an existing followupaction record
|
||||
SELECT * FROM followupactions
|
||||
|
|
@ -355,7 +387,7 @@ WHERE genders.id = :id
|
|||
-- :name get-intention :? :1
|
||||
-- :doc selects an existing intention record
|
||||
SELECT * FROM intentions
|
||||
WHERE intentions.Id = :Id
|
||||
WHERE intentions.id = :id
|
||||
|
||||
-- :name get-issue :? :1
|
||||
-- :doc selects an existing issue record
|
||||
|
|
@ -475,9 +507,9 @@ ORDER BY lv_canvassers.username,
|
|||
-- :name list-canvassers-by-role :? :*
|
||||
-- :doc links all existing canvasser records related to a given role
|
||||
SELECT *
|
||||
FROM canvassers, ln_canvassers_roles
|
||||
WHERE canvassers.id = ln_canvassers_roles.canvasser_id
|
||||
AND ln_canvassers_roles.role_id = :id
|
||||
FROM canvassers, ln_roles_canvassers_roles
|
||||
WHERE canvassers.id = ln_roles_canvassers_roles.canvasser_id
|
||||
AND ln_roles_canvassers_roles.role_id = :id
|
||||
ORDER BY canvassers.username,
|
||||
canvassers.fullname,
|
||||
canvassers.address_id,
|
||||
|
|
@ -547,6 +579,27 @@ ORDER BY lv_electors.name,
|
|||
lv_electors.gender,
|
||||
lv_electors.id
|
||||
|
||||
-- :name list-events :? :*
|
||||
-- :doc lists all existing event records
|
||||
SELECT DISTINCT * FROM lv_events
|
||||
ORDER BY lv_events.name,
|
||||
lv_events.date,
|
||||
lv_events.time,
|
||||
lv_events.id
|
||||
--~ (if (:offset params) "OFFSET :offset ")
|
||||
--~ (if (:limit params) "LIMIT :limit" "LIMIT 100")
|
||||
|
||||
-- :name list-events-by-team :? :*
|
||||
-- :doc links all existing event records related to a given team
|
||||
SELECT *
|
||||
FROM events, ln_teams_events_teams
|
||||
WHERE events.id = ln_teams_events_teams.event_id
|
||||
AND ln_teams_events_teams.team_id = :id
|
||||
ORDER BY events.name,
|
||||
events.date,
|
||||
events.time,
|
||||
events.id
|
||||
|
||||
-- :name list-followupactions :? :*
|
||||
-- :doc lists all existing followupaction records
|
||||
SELECT DISTINCT * FROM lv_followupactions
|
||||
|
|
@ -652,21 +705,21 @@ SELECT DISTINCT * FROM lv_intentions
|
|||
-- :doc lists all existing intention records related to a given elector
|
||||
SELECT *
|
||||
FROM lv_intentions, intentions
|
||||
WHERE lv_intentions.Id = intentions.Id
|
||||
WHERE lv_intentions.id = intentions.id
|
||||
AND intentions.elector_id = :id
|
||||
|
||||
-- :name list-intentions-by-option :? :*
|
||||
-- :doc lists all existing intention records related to a given option
|
||||
SELECT *
|
||||
FROM lv_intentions, intentions
|
||||
WHERE lv_intentions.Id = intentions.Id
|
||||
WHERE lv_intentions.id = intentions.id
|
||||
AND intentions.option_id = :id
|
||||
|
||||
-- :name list-intentions-by-visit :? :*
|
||||
-- :doc lists all existing intention records related to a given visit
|
||||
SELECT *
|
||||
FROM lv_intentions, intentions
|
||||
WHERE lv_intentions.Id = intentions.Id
|
||||
WHERE lv_intentions.id = intentions.id
|
||||
AND intentions.visit_id = :id
|
||||
|
||||
-- :name list-issues :? :*
|
||||
|
|
@ -692,9 +745,9 @@ ORDER BY lv_roles.name,
|
|||
-- :name list-roles-by-canvasser :? :*
|
||||
-- :doc links all existing role records related to a given canvasser
|
||||
SELECT *
|
||||
FROM roles, ln_canvassers_roles
|
||||
WHERE roles.id = ln_canvassers_roles.role_id
|
||||
AND ln_canvassers_roles.canvasser_id = :id
|
||||
FROM roles, ln_members_roles_canvassers
|
||||
WHERE roles.id = ln_members_roles_canvassers.role_id
|
||||
AND ln_members_roles_canvassers.canvasser_id = :id
|
||||
ORDER BY roles.name,
|
||||
roles.id
|
||||
|
||||
|
|
@ -709,9 +762,9 @@ ORDER BY lv_teams.name,
|
|||
-- :name list-teams-by-canvasser :? :*
|
||||
-- :doc links all existing team records related to a given canvasser
|
||||
SELECT *
|
||||
FROM teams, ln_canvassers_teams
|
||||
WHERE teams.id = ln_canvassers_teams.team_id
|
||||
AND ln_canvassers_teams.canvasser_id = :id
|
||||
FROM teams, ln_organisers_teams_canvassers
|
||||
WHERE teams.id = ln_organisers_teams_canvassers.team_id
|
||||
AND ln_organisers_teams_canvassers.canvasser_id = :id
|
||||
ORDER BY teams.name,
|
||||
teams.id
|
||||
|
||||
|
|
@ -790,6 +843,8 @@ SELECT DISTINCT * FROM lv_canvassers
|
|||
WHERE false
|
||||
--~ (if (:username params) "OR username LIKE '%:username%'")
|
||||
--~ (if (:fullname params) "OR fullname LIKE '%:fullname%'")
|
||||
--~ (if (:avatar params) "OR avatar = :avatar")
|
||||
--~ (if (:bio params) "OR bio LIKE '%:bio%'")
|
||||
--~ (if (:elector_id params) "OR elector_id = :elector_id")
|
||||
--~ (if (:address_id params) "OR address_id = :address_id")
|
||||
--~ (if (:phone params) "OR phone LIKE '%:phone%'")
|
||||
|
|
@ -848,6 +903,23 @@ ORDER BY lv_electors.name,
|
|||
--~ (if (:offset params) "OFFSET :offset ")
|
||||
--~ (if (:limit params) "LIMIT :limit" "LIMIT 100")
|
||||
|
||||
-- :name search-strings-events :? :1
|
||||
-- :doc selects existing event records having any string field matching the parameter of the same name by substring match
|
||||
SELECT DISTINCT * FROM lv_events
|
||||
WHERE false
|
||||
--~ (if (:name params) "OR name LIKE '%:name%'")
|
||||
--~ (if (:date params) "OR date = ':date'")
|
||||
--~ (if (:time params) "OR time = ':time'")
|
||||
--~ (if (:decription params) "OR decription LIKE '%:decription%'")
|
||||
--~ (if (:cancelled params) "OR cancelled = :cancelled")
|
||||
--~ (if (:id params) "OR id = :id")
|
||||
ORDER BY lv_events.name,
|
||||
lv_events.date,
|
||||
lv_events.time,
|
||||
lv_events.id
|
||||
--~ (if (:offset params) "OFFSET :offset ")
|
||||
--~ (if (:limit params) "LIMIT :limit" "LIMIT 100")
|
||||
|
||||
-- :name search-strings-followupactions :? :1
|
||||
-- :doc selects existing followupaction records having any string field matching the parameter of the same name by substring match
|
||||
SELECT DISTINCT * FROM lv_followupactions
|
||||
|
|
@ -904,7 +976,7 @@ WHERE false
|
|||
--~ (if (:elector_id params) "OR elector_id = :elector_id")
|
||||
--~ (if (:option_id params) "OR option_id LIKE '%:option_id%'")
|
||||
--~ (if (:locality params) "OR locality = :locality")
|
||||
--~ (if (:Id params) "OR Id = :Id")
|
||||
--~ (if (:id params) "OR id = :id")
|
||||
--~ (if (:offset params) "OFFSET :offset ")
|
||||
--~ (if (:limit params) "LIMIT :limit" "LIMIT 100")
|
||||
|
||||
|
|
@ -994,6 +1066,8 @@ WHERE authorities.id = :id
|
|||
UPDATE canvassers
|
||||
SET username = :username,
|
||||
fullname = :fullname,
|
||||
avatar = :avatar,
|
||||
bio = :bio,
|
||||
elector_id = :elector_id,
|
||||
address_id = :address_id,
|
||||
phone = :phone,
|
||||
|
|
@ -1025,6 +1099,16 @@ SET name = :name,
|
|||
gender = :gender
|
||||
WHERE electors.id = :id
|
||||
|
||||
-- :name update-event! :! :n
|
||||
-- :doc updates an existing event record
|
||||
UPDATE events
|
||||
SET name = :name,
|
||||
date = :date,
|
||||
time = :time,
|
||||
decription = :decription,
|
||||
cancelled = :cancelled
|
||||
WHERE events.id = :id
|
||||
|
||||
-- :name update-followupaction! :! :n
|
||||
-- :doc updates an existing followupaction record
|
||||
UPDATE followupactions
|
||||
|
|
@ -1063,7 +1147,7 @@ SET visit_id = :visit_id,
|
|||
elector_id = :elector_id,
|
||||
option_id = :option_id,
|
||||
locality = :locality
|
||||
WHERE intentions.Id = :Id
|
||||
WHERE intentions.id = :id
|
||||
|
||||
-- :name update-issue! :! :n
|
||||
-- :doc updates an existing issue record
|
||||
|
|
|
|||
65
resources/sql/test-canvassers.sql
Normal file
65
resources/sql/test-canvassers.sql
Normal file
|
|
@ -0,0 +1,65 @@
|
|||
|
||||
insert into canvassers (username, fullname, elector_id, address_id, authority_id)
|
||||
values ('test_admin', 'Michael Thomson', 14, 4, 'Twitter');
|
||||
|
||||
insert into canvassers (username, fullname, elector_id, address_id, authority_id)
|
||||
values ('test_analyst', 'Jack Lang', 13, 4, 'Twitter');
|
||||
|
||||
insert into canvassers (username, fullname, elector_id, address_id, authority_id)
|
||||
values ('test_canvasser', 'Catriona Lang', 12, 4, 'Twitter');
|
||||
|
||||
insert into canvassers (username, fullname, elector_id, address_id, authority_id)
|
||||
values ('test_editor', 'Ursula Lang', 11, 4, 'Twitter');
|
||||
|
||||
insert into canvassers (username, fullname, elector_id, address_id, authority_id)
|
||||
values ('test_expert', 'Charlie Gourlay', 18, 5, 'Twitter');
|
||||
|
||||
insert into canvassers (username, fullname, elector_id, address_id, authority_id)
|
||||
values ('test_organiser', 'Jude Morrison', 15, 5, 'Twitter');
|
||||
|
||||
insert into ln_members_roles_canvassers
|
||||
values (1, (select id from canvassers where username='test_admin'));
|
||||
insert into ln_members_roles_canvassers
|
||||
values (2, (select id from canvassers where username='test_analyst'));
|
||||
insert into ln_members_roles_canvassers
|
||||
values (3, (select id from canvassers where username='test_editor'));
|
||||
insert into ln_members_roles_canvassers
|
||||
values (4, (select id from canvassers where username='test_organiser'));
|
||||
insert into ln_members_roles_canvassers
|
||||
values (5, (select id from canvassers where username='test_expert'));
|
||||
insert into ln_members_roles_canvassers
|
||||
values (6, (select id from canvassers where username='test_canvasser'));
|
||||
|
||||
insert into teams (name, district_id, latitude, longitude)
|
||||
values ('Yes Stewartry', 1, 54.94, -3.94);
|
||||
|
||||
insert into ln_members_teams_canvassers
|
||||
values (
|
||||
(select id from teams where name='Yes Stewartry'),
|
||||
(select id from canvassers where username='test_admin'));
|
||||
|
||||
insert into ln_members_teams_canvassers
|
||||
values (
|
||||
(select id from teams where name='Yes Stewartry'),
|
||||
(select id from canvassers where username='test_analyst'));
|
||||
|
||||
insert into ln_members_teams_canvassers
|
||||
values (
|
||||
(select id from teams where name='Yes Stewartry'),
|
||||
(select id from canvassers where username='test_editor'));
|
||||
|
||||
insert into ln_members_teams_canvassers
|
||||
values (
|
||||
(select id from teams where name='Yes Stewartry'),
|
||||
(select id from canvassers where username='test_organiser'));
|
||||
|
||||
insert into ln_members_teams_canvassers
|
||||
values (
|
||||
(select id from teams where name='Yes Stewartry'),
|
||||
(select id from canvassers where username='test_expert'));
|
||||
|
||||
insert into ln_members_teams_canvassers
|
||||
values (
|
||||
(select id from teams where name='Yes Stewartry'),
|
||||
(select id from canvassers where username='test_canvasser'));
|
||||
|
||||
|
|
@ -5,23 +5,19 @@
|
|||
--
|
||||
-- auto-generated by [Application Description Language framework]
|
||||
--
|
||||
-- (https://github.com/simon-brooke/adl) at 20180705T101417.868Z
|
||||
-- (https://github.com/simon-brooke/adl) at 20180707T080949.294Z
|
||||
--
|
||||
--
|
||||
-- A web-app intended to be used by canvassers campaigning for a
|
||||
-- 'Yes' vote in the second independence referendum.
|
||||
--
|
||||
-- The web-app will be delivered to canvassers out knocking doors
|
||||
-- primarily through an HTML5/React single-page app designed to work on a
|
||||
-- mobile phone; it's possible that someone else may do an Android of
|
||||
-- iPhone native app to address the same back end but at present I have
|
||||
-- no plans for this.
|
||||
--
|
||||
-- There must also be an administrative interface through which
|
||||
-- privileged users can set the system up and authorise canvassers, and a
|
||||
-- 'followup' interface through which issue-expert specialist canvassers
|
||||
-- can address particular electors' queries.
|
||||
--
|
||||
-- A web-app intended to be used by canvassers
|
||||
-- campaigning for a 'Yes' vote in the second independence
|
||||
-- referendum. The web-app will be delivered to canvassers out
|
||||
-- knocking doors primarily through an HTML5/React single-page app
|
||||
-- designed to work on a mobile phone; it's possible that someone
|
||||
-- else may do an Android of iPhone native app to address the same
|
||||
-- back end but at present I have no plans for this. There must also
|
||||
-- be an administrative interface through which privileged users can
|
||||
-- set the system up and authorise canvassers, and a 'followup'
|
||||
-- interface through which issue-expert specialist canvassers can
|
||||
-- address particular electors' queries.
|
||||
------------------------------------------------------------------------
|
||||
|
||||
------------------------------------------------------------------------
|
||||
|
|
@ -69,7 +65,8 @@ CREATE GROUP teamorganisers;
|
|||
------------------------------------------------------------------------
|
||||
-- primary table addresses for entity addresses
|
||||
--
|
||||
-- Addresses of all buildings which contain dwellings.
|
||||
-- Addresses of all buildings which contain
|
||||
-- dwellings.
|
||||
------------------------------------------------------------------------
|
||||
CREATE TABLE addresses
|
||||
(
|
||||
|
|
@ -95,7 +92,8 @@ GRANT DELETE ON addresses TO admin ;
|
|||
------------------------------------------------------------------------
|
||||
-- primary table authorities for entity authorities
|
||||
--
|
||||
-- Authorities which may authenticate canvassers to the system.
|
||||
-- Authorities which may authenticate canvassers to
|
||||
-- the system.
|
||||
------------------------------------------------------------------------
|
||||
CREATE TABLE authorities
|
||||
(
|
||||
|
|
@ -119,13 +117,16 @@ GRANT DELETE ON authorities TO admin ;
|
|||
------------------------------------------------------------------------
|
||||
-- primary table canvassers for entity canvassers
|
||||
--
|
||||
-- Primary users of the system: those actually interviewing electors.
|
||||
-- Primary users of the system: those actually
|
||||
-- interviewing electors.
|
||||
------------------------------------------------------------------------
|
||||
CREATE TABLE canvassers
|
||||
(
|
||||
id SERIAL NOT NULL PRIMARY KEY,
|
||||
username VARCHAR(32) NOT NULL,
|
||||
fullname VARCHAR(64) NOT NULL,
|
||||
avatar VARCHAR(),
|
||||
bio TEXT,
|
||||
elector_id INTEGER,
|
||||
address_id INTEGER NOT NULL,
|
||||
phone VARCHAR(16),
|
||||
|
|
@ -150,8 +151,9 @@ GRANT DELETE ON canvassers TO admin ;
|
|||
------------------------------------------------------------------------
|
||||
-- primary table districts for entity districts
|
||||
--
|
||||
-- Electoral districts: TODO: Shape (polygon) information will need to be
|
||||
-- added, for use in maps.
|
||||
-- Electoral districts: TODO: Shape (polygon)
|
||||
-- information will need to be added, for use in
|
||||
-- maps.
|
||||
------------------------------------------------------------------------
|
||||
CREATE TABLE districts
|
||||
(
|
||||
|
|
@ -172,15 +174,12 @@ GRANT DELETE ON districts TO admin ;
|
|||
------------------------------------------------------------------------
|
||||
-- primary table dwellings for entity dwellings
|
||||
--
|
||||
-- All dwellings within addresses in the system; a dwelling is a
|
||||
-- house, flat or appartment in which electors live. Every address
|
||||
-- should have
|
||||
-- at least one dwelling; essentially, an address maps onto a
|
||||
-- street door and
|
||||
-- dwellings map onto what's behind that door. So a tenement or a
|
||||
-- block of flats
|
||||
-- would be one address with many dwellings.
|
||||
--
|
||||
-- All dwellings within addresses in the system; a
|
||||
-- dwelling is a house, flat or appartment in which electors live.
|
||||
-- Every address should have at least one dwelling; essentially,
|
||||
-- an address maps onto a street door and dwellings map onto
|
||||
-- what's behind that door. So a tenement or a block of flats
|
||||
-- would be one address with many dwellings.
|
||||
------------------------------------------------------------------------
|
||||
CREATE TABLE dwellings
|
||||
(
|
||||
|
|
@ -201,8 +200,9 @@ GRANT DELETE ON dwellings TO admin ;
|
|||
------------------------------------------------------------------------
|
||||
-- primary table electors for entity electors
|
||||
--
|
||||
-- All electors known to the system; electors are people believed to be
|
||||
-- entitled to vote in the current campaign.
|
||||
-- All electors known to the system; electors are
|
||||
-- people believed to be entitled to vote in the current
|
||||
-- campaign.
|
||||
------------------------------------------------------------------------
|
||||
CREATE TABLE electors
|
||||
(
|
||||
|
|
@ -223,10 +223,42 @@ GRANT INSERT ON electors TO admin ;
|
|||
GRANT UPDATE ON electors TO admin ;
|
||||
GRANT DELETE ON electors TO admin ;
|
||||
|
||||
------------------------------------------------------------------------
|
||||
-- primary table events for entity events
|
||||
--
|
||||
--
|
||||
-- An event to which a team or teams are invited. Typically created
|
||||
-- by the team organiser(s).
|
||||
-- May be a training event, a social event or a canvassing
|
||||
-- session.
|
||||
--
|
||||
------------------------------------------------------------------------
|
||||
CREATE TABLE events
|
||||
(
|
||||
id SERIAL NOT NULL PRIMARY KEY,
|
||||
name VARCHAR(64) NOT NULL,
|
||||
date DATE,
|
||||
time TIME,
|
||||
decription TEXT,
|
||||
cancelled BOOLEAN DEFAULT false
|
||||
);
|
||||
GRANT SELECT ON events TO admin,
|
||||
analysts,
|
||||
canvassers,
|
||||
issueeditors,
|
||||
issueexperts,
|
||||
teamorganisers ;
|
||||
GRANT INSERT ON events TO admin,
|
||||
teamorganisers ;
|
||||
GRANT UPDATE ON events TO admin,
|
||||
teamorganisers ;
|
||||
GRANT DELETE ON events TO admin ;
|
||||
|
||||
------------------------------------------------------------------------
|
||||
-- primary table followupactions for entity followupactions
|
||||
--
|
||||
-- Actions taken on followup requests.
|
||||
-- Actions taken on followup
|
||||
-- requests.
|
||||
------------------------------------------------------------------------
|
||||
CREATE TABLE followupactions
|
||||
(
|
||||
|
|
@ -267,7 +299,8 @@ GRANT DELETE ON followupmethods TO admin ;
|
|||
------------------------------------------------------------------------
|
||||
-- primary table followuprequests for entity followuprequests
|
||||
--
|
||||
-- Requests for a followup with an issue expert
|
||||
-- Requests for a followup with an issue
|
||||
-- expert
|
||||
------------------------------------------------------------------------
|
||||
CREATE TABLE followuprequests
|
||||
(
|
||||
|
|
@ -291,7 +324,8 @@ GRANT DELETE ON followuprequests TO admin ;
|
|||
------------------------------------------------------------------------
|
||||
-- primary table genders for entity genders
|
||||
--
|
||||
-- All genders which may be assigned to electors.
|
||||
-- All genders which may be assigned to
|
||||
-- electors.
|
||||
------------------------------------------------------------------------
|
||||
CREATE TABLE genders
|
||||
(
|
||||
|
|
@ -310,11 +344,12 @@ GRANT DELETE ON genders TO admin ;
|
|||
------------------------------------------------------------------------
|
||||
-- primary table intentions for entity intentions
|
||||
--
|
||||
-- Intentions of electors to vote for options elicited in visits.
|
||||
-- Intentions of electors to vote for options
|
||||
-- elicited in visits.
|
||||
------------------------------------------------------------------------
|
||||
CREATE TABLE intentions
|
||||
(
|
||||
Id SERIAL NOT NULL PRIMARY KEY,
|
||||
id SERIAL NOT NULL PRIMARY KEY,
|
||||
visit_id INTEGER NOT NULL,
|
||||
elector_id INTEGER,
|
||||
option_id VARCHAR(32) NOT NULL,
|
||||
|
|
@ -331,8 +366,8 @@ GRANT DELETE ON intentions TO admin ;
|
|||
------------------------------------------------------------------------
|
||||
-- primary table issues for entity issues
|
||||
--
|
||||
-- Issues believed to be of interest to electors, about which they may
|
||||
-- have questions.
|
||||
-- Issues believed to be of interest to electors,
|
||||
-- about which they may have questions.
|
||||
------------------------------------------------------------------------
|
||||
CREATE TABLE issues
|
||||
(
|
||||
|
|
@ -356,7 +391,8 @@ GRANT DELETE ON issues TO admin ;
|
|||
------------------------------------------------------------------------
|
||||
-- primary table options for entity options
|
||||
--
|
||||
-- Options in the election or referendum being canvassed on
|
||||
-- Options in the election or referendum being
|
||||
-- canvassed on
|
||||
------------------------------------------------------------------------
|
||||
CREATE TABLE options
|
||||
(
|
||||
|
|
@ -375,8 +411,9 @@ GRANT DELETE ON options TO admin ;
|
|||
------------------------------------------------------------------------
|
||||
-- primary table roles for entity roles
|
||||
--
|
||||
-- A role (essentially, the same as a group, but application layer rather
|
||||
-- than database layer) of which a user may be a member.
|
||||
-- A role (essentially, the same as a group, but
|
||||
-- application layer rather than database layer) of which a user
|
||||
-- may be a member.
|
||||
------------------------------------------------------------------------
|
||||
CREATE TABLE roles
|
||||
(
|
||||
|
|
@ -419,8 +456,8 @@ GRANT DELETE ON teams TO admin ;
|
|||
------------------------------------------------------------------------
|
||||
-- primary table visits for entity visits
|
||||
--
|
||||
-- All visits made by canvassers to dwellings in which opinions were
|
||||
-- recorded.
|
||||
-- All visits made by canvassers to dwellings in
|
||||
-- which opinions were recorded.
|
||||
------------------------------------------------------------------------
|
||||
CREATE TABLE visits
|
||||
(
|
||||
|
|
@ -491,6 +528,8 @@ GRANT SELECT ON lv_authorities TO admin,
|
|||
CREATE VIEW lv_canvassers AS
|
||||
SELECT canvassers.username,
|
||||
canvassers.fullname,
|
||||
canvassers.avatar,
|
||||
canvassers.bio,
|
||||
electors.name ||', '|| electors.phone ||', '|| electors.email ||', '|| genders.id AS elector_id_expanded,
|
||||
canvassers.elector_id,
|
||||
addresses.address ||', '|| addresses.postcode AS address_id_expanded,
|
||||
|
|
@ -570,6 +609,25 @@ GRANT SELECT ON lv_electors TO admin,
|
|||
issueexperts,
|
||||
teamorganisers ;
|
||||
|
||||
------------------------------------------------------------------------
|
||||
-- convenience view lv_events of entity events for lists, et cetera
|
||||
------------------------------------------------------------------------
|
||||
CREATE VIEW lv_events AS
|
||||
SELECT events.name,
|
||||
events.date,
|
||||
events.time,
|
||||
events.decription,
|
||||
events.cancelled,
|
||||
events.id
|
||||
FROM events
|
||||
;
|
||||
GRANT SELECT ON lv_events TO admin,
|
||||
analysts,
|
||||
canvassers,
|
||||
issueeditors,
|
||||
issueexperts,
|
||||
teamorganisers ;
|
||||
|
||||
------------------------------------------------------------------------
|
||||
-- convenience view lv_followupactions of entity followupactions for
|
||||
-- lists, et cetera
|
||||
|
|
@ -661,7 +719,7 @@ SELECT addresses.address ||', '|| addresses.postcode ||', '|| visits.date AS vis
|
|||
options.id AS option_id_expanded,
|
||||
intentions.option_id,
|
||||
intentions.locality,
|
||||
intentions.Id
|
||||
intentions.id
|
||||
FROM visits, intentions, addresses, genders, electors, options
|
||||
WHERE intentions.visit_id = visits.id
|
||||
AND intentions.elector_id = electors.id
|
||||
|
|
@ -860,64 +918,149 @@ ALTER TABLE visits ADD CONSTRAINT ri_visits_canvassers_canvasser_id
|
|||
------------------------------------------------------------------------
|
||||
-- link table joining canvassers with roles
|
||||
------------------------------------------------------------------------
|
||||
CREATE TABLE ln_canvassers_roles
|
||||
CREATE TABLE ln_roles_canvassers_roles
|
||||
(
|
||||
canvasser_id INTEGER,
|
||||
role_id INTEGER
|
||||
);
|
||||
GRANT SELECT ON ln_canvassers_roles TO admin,
|
||||
GRANT SELECT ON ln_roles_canvassers_roles TO admin,
|
||||
analysts,
|
||||
canvassers,
|
||||
issueeditors,
|
||||
issueexperts,
|
||||
teamorganisers ;
|
||||
GRANT INSERT ON ln_canvassers_roles TO admin,
|
||||
GRANT INSERT ON ln_roles_canvassers_roles TO admin,
|
||||
canvassers,
|
||||
teamorganisers ;
|
||||
GRANT UPDATE ON ln_canvassers_roles TO admin,
|
||||
GRANT UPDATE ON ln_roles_canvassers_roles TO admin,
|
||||
canvassers,
|
||||
teamorganisers ;
|
||||
GRANT DELETE ON ln_canvassers_roles TO admin ;
|
||||
GRANT DELETE ON ln_roles_canvassers_roles TO admin ;
|
||||
|
||||
ALTER TABLE ln_canvassers_roles ADD CONSTRAINT ri_ln_canvassers_roles_canvassers_canvasser_id
|
||||
ALTER TABLE ln_roles_canvassers_roles ADD CONSTRAINT ri_ln_roles_canvassers_roles_canvassers_canvasser_id
|
||||
FOREIGN KEY( canvasser_id )
|
||||
REFERENCES canvassers(id)
|
||||
ON DELETE NO ACTION ;
|
||||
|
||||
ALTER TABLE ln_canvassers_roles ADD CONSTRAINT ri_ln_canvassers_roles_roles_role_id
|
||||
ALTER TABLE ln_roles_canvassers_roles ADD CONSTRAINT ri_ln_roles_canvassers_roles_roles_role_id
|
||||
FOREIGN KEY( role_id )
|
||||
REFERENCES roles(id)
|
||||
ON DELETE NO ACTION ;
|
||||
|
||||
|
||||
|
||||
------------------------------------------------------------------------
|
||||
-- link table joining teams with canvassers
|
||||
-- link table joining events with teams
|
||||
------------------------------------------------------------------------
|
||||
CREATE TABLE ln_canvassers_teams
|
||||
CREATE TABLE ln_teams_events_teams
|
||||
(
|
||||
team_id INTEGER,
|
||||
canvasser_id INTEGER
|
||||
event_id INTEGER,
|
||||
team_id INTEGER
|
||||
);
|
||||
GRANT SELECT ON ln_canvassers_teams TO admin,
|
||||
GRANT SELECT ON ln_teams_events_teams TO admin,
|
||||
analysts,
|
||||
canvassers,
|
||||
issueeditors,
|
||||
issueexperts,
|
||||
teamorganisers ;
|
||||
GRANT INSERT ON ln_canvassers_teams TO admin,
|
||||
GRANT INSERT ON ln_teams_events_teams TO admin,
|
||||
teamorganisers ;
|
||||
GRANT UPDATE ON ln_canvassers_teams TO admin,
|
||||
GRANT UPDATE ON ln_teams_events_teams TO admin,
|
||||
teamorganisers ;
|
||||
GRANT DELETE ON ln_canvassers_teams TO admin ;
|
||||
GRANT DELETE ON ln_teams_events_teams TO admin ;
|
||||
|
||||
ALTER TABLE ln_canvassers_teams ADD CONSTRAINT ri_ln_canvassers_teams_canvassers_canvasser_id
|
||||
FOREIGN KEY( canvasser_id )
|
||||
REFERENCES canvassers(id)
|
||||
ALTER TABLE ln_teams_events_teams ADD CONSTRAINT ri_ln_teams_events_teams_events_event_id
|
||||
FOREIGN KEY( event_id )
|
||||
REFERENCES events(id)
|
||||
ON DELETE NO ACTION ;
|
||||
|
||||
ALTER TABLE ln_canvassers_teams ADD CONSTRAINT ri_ln_canvassers_teams_teams_team_id
|
||||
ALTER TABLE ln_teams_events_teams ADD CONSTRAINT ri_ln_teams_events_teams_teams_team_id
|
||||
FOREIGN KEY( team_id )
|
||||
REFERENCES teams(id)
|
||||
ON DELETE NO ACTION ;
|
||||
|
||||
------------------------------------------------------------------------
|
||||
-- link table joining roles with canvassers
|
||||
------------------------------------------------------------------------
|
||||
CREATE TABLE ln_members_roles_canvassers
|
||||
(
|
||||
role_id INTEGER,
|
||||
canvasser_id INTEGER
|
||||
);
|
||||
GRANT SELECT ON ln_members_roles_canvassers TO admin,
|
||||
analysts,
|
||||
canvassers,
|
||||
issueeditors,
|
||||
issueexperts,
|
||||
teamorganisers ;
|
||||
GRANT INSERT ON ln_members_roles_canvassers TO admin ;
|
||||
GRANT UPDATE ON ln_members_roles_canvassers TO admin ;
|
||||
GRANT DELETE ON ln_members_roles_canvassers TO admin ;
|
||||
|
||||
ALTER TABLE ln_members_roles_canvassers ADD CONSTRAINT ri_ln_members_roles_canvassers_canvassers_canvasser_id
|
||||
FOREIGN KEY( canvasser_id )
|
||||
REFERENCES canvassers(id)
|
||||
ON DELETE NO ACTION ;
|
||||
|
||||
ALTER TABLE ln_members_roles_canvassers ADD CONSTRAINT ri_ln_members_roles_canvassers_roles_role_id
|
||||
FOREIGN KEY( role_id )
|
||||
REFERENCES roles(id)
|
||||
ON DELETE NO ACTION ;
|
||||
|
||||
------------------------------------------------------------------------
|
||||
-- link table joining teams with canvassers
|
||||
------------------------------------------------------------------------
|
||||
CREATE TABLE ln_members_teams_canvassers
|
||||
(
|
||||
team_id INTEGER,
|
||||
canvasser_id INTEGER
|
||||
);
|
||||
GRANT SELECT ON ln_members_teams_canvassers TO admin,
|
||||
analysts,
|
||||
canvassers,
|
||||
issueeditors,
|
||||
issueexperts,
|
||||
teamorganisers ;
|
||||
GRANT INSERT ON ln_members_teams_canvassers TO admin,
|
||||
teamorganisers ;
|
||||
GRANT UPDATE ON ln_members_teams_canvassers TO admin,
|
||||
teamorganisers ;
|
||||
GRANT DELETE ON ln_members_teams_canvassers TO admin ;
|
||||
|
||||
ALTER TABLE ln_members_teams_canvassers ADD CONSTRAINT ri_ln_members_teams_canvassers_canvassers_canvasser_id
|
||||
FOREIGN KEY( canvasser_id )
|
||||
REFERENCES canvassers(id)
|
||||
ON DELETE NO ACTION ;
|
||||
|
||||
ALTER TABLE ln_members_teams_canvassers ADD CONSTRAINT ri_ln_members_teams_canvassers_teams_team_id
|
||||
FOREIGN KEY( team_id )
|
||||
REFERENCES teams(id)
|
||||
ON DELETE NO ACTION ;
|
||||
|
||||
------------------------------------------------------------------------
|
||||
-- link table joining teams with canvassers
|
||||
------------------------------------------------------------------------
|
||||
CREATE TABLE ln_organisers_teams_canvassers
|
||||
(
|
||||
team_id INTEGER,
|
||||
canvasser_id INTEGER
|
||||
);
|
||||
GRANT SELECT ON ln_organisers_teams_canvassers TO admin,
|
||||
analysts,
|
||||
canvassers,
|
||||
issueeditors,
|
||||
issueexperts,
|
||||
teamorganisers ;
|
||||
GRANT INSERT ON ln_organisers_teams_canvassers TO admin,
|
||||
teamorganisers ;
|
||||
GRANT UPDATE ON ln_organisers_teams_canvassers TO admin,
|
||||
teamorganisers ;
|
||||
GRANT DELETE ON ln_organisers_teams_canvassers TO admin ;
|
||||
|
||||
ALTER TABLE ln_organisers_teams_canvassers ADD CONSTRAINT ri_ln_organisers_teams_canvassers_canvassers_canvasser_id
|
||||
FOREIGN KEY( canvasser_id )
|
||||
REFERENCES canvassers(id)
|
||||
ON DELETE NO ACTION ;
|
||||
|
||||
ALTER TABLE ln_organisers_teams_canvassers ADD CONSTRAINT ri_ln_organisers_teams_canvassers_teams_team_id
|
||||
FOREIGN KEY( team_id )
|
||||
REFERENCES teams(id)
|
||||
ON DELETE NO ACTION ;
|
||||
Loading…
Add table
Add a link
Reference in a new issue