169 lines
3.6 KiB
MySQL
169 lines
3.6 KiB
MySQL
|
-- +goose Up
|
||
|
-- SQL in section 'Up' is executed when this migration is applied
|
||
|
CREATE TABLE voters_new (
|
||
|
id INTEGER PRIMARY KEY,
|
||
|
name VARCHAR(255) NOT NULL,
|
||
|
enabled BOOLEAN NOT NULL,
|
||
|
reminder VARCHAR(255)
|
||
|
);
|
||
|
INSERT INTO voters_new (id, name, enabled, reminder)
|
||
|
SELECT
|
||
|
id,
|
||
|
name,
|
||
|
enabled,
|
||
|
reminder
|
||
|
FROM voters;
|
||
|
DROP TABLE voters;
|
||
|
ALTER TABLE voters_new
|
||
|
RENAME TO voters;
|
||
|
|
||
|
CREATE TABLE emails_new (
|
||
|
voter INTEGER NOT NULL REFERENCES voters (id),
|
||
|
address VARCHAR(255) UNIQUE NOT NULL
|
||
|
);
|
||
|
INSERT INTO emails_new (voter, address)
|
||
|
SELECT
|
||
|
voter,
|
||
|
address
|
||
|
FROM emails;
|
||
|
DROP TABLE emails;
|
||
|
ALTER TABLE emails_new
|
||
|
RENAME TO emails;
|
||
|
|
||
|
CREATE TABLE decisions_new (
|
||
|
id INTEGER PRIMARY KEY,
|
||
|
proposed DATETIME NOT NULL,
|
||
|
proponent INTEGER NOT NULL REFERENCES voters (id),
|
||
|
title VARCHAR(255) NOT NULL,
|
||
|
content TEXT NOT NULL,
|
||
|
status INTEGER NOT NULL CHECK (status IN (-2, -1, 0, 1)),
|
||
|
due DATETIME NOT NULL,
|
||
|
modified DATETIME NOT NULL,
|
||
|
tag VARCHAR(255) UNIQUE NOT NULL,
|
||
|
votetype INTEGER DEFAULT 0 NOT NULL CHECK (votetype IN (0, 1))
|
||
|
);
|
||
|
INSERT INTO decisions_new (
|
||
|
id, proposed, proponent, title, content, status, due, modified, tag, votetype
|
||
|
)
|
||
|
SELECT
|
||
|
id,
|
||
|
proposed,
|
||
|
proponent,
|
||
|
title,
|
||
|
content,
|
||
|
status,
|
||
|
due,
|
||
|
modified,
|
||
|
tag,
|
||
|
votetype
|
||
|
FROM decisions;
|
||
|
DROP TABLE decisions;
|
||
|
ALTER TABLE decisions_new
|
||
|
RENAME TO decisions;
|
||
|
CREATE INDEX decisions_proposed_idx
|
||
|
ON decisions (proposed);
|
||
|
|
||
|
CREATE TABLE votes_new (
|
||
|
decision INTEGER REFERENCES decisions (id),
|
||
|
voter INTEGER REFERENCES voters (id),
|
||
|
vote INTEGER NOT NULL CHECK (vote IN (-1, 0, 1)),
|
||
|
voted DATETIME NOT NULL,
|
||
|
notes TEXT NOT NULL DEFAULT '',
|
||
|
PRIMARY KEY (decision, voter)
|
||
|
);
|
||
|
INSERT INTO votes_new (decision, voter, vote, voted, notes)
|
||
|
SELECT
|
||
|
decision,
|
||
|
voter,
|
||
|
vote,
|
||
|
voted,
|
||
|
notes
|
||
|
FROM votes;
|
||
|
DROP TABLE votes;
|
||
|
ALTER TABLE votes_new
|
||
|
RENAME TO votes;
|
||
|
|
||
|
-- +goose Down
|
||
|
-- SQL section 'Down' is executed when this migration is rolled back
|
||
|
|
||
|
CREATE TABLE votes_orig (
|
||
|
decision INT4,
|
||
|
voter INT4,
|
||
|
vote INT4,
|
||
|
voted DATETIME,
|
||
|
notes TEXT DEFAULT ''
|
||
|
);
|
||
|
INSERT INTO votes_orig (decision, voter, vote, voted, notes)
|
||
|
SELECT
|
||
|
decision,
|
||
|
voter,
|
||
|
vote,
|
||
|
voted,
|
||
|
notes
|
||
|
FROM votes;
|
||
|
DROP TABLE votes;
|
||
|
ALTER TABLE votes_orig
|
||
|
RENAME TO votes;
|
||
|
|
||
|
CREATE TABLE decisions_orig (
|
||
|
id INTEGER PRIMARY KEY,
|
||
|
proposed DATETIME,
|
||
|
proponent INTEGER,
|
||
|
title VARCHAR(255),
|
||
|
content TEXT,
|
||
|
quorum INTEGER,
|
||
|
majority INTEGER,
|
||
|
status INTEGER,
|
||
|
due DATETIME,
|
||
|
modified DATETIME,
|
||
|
tag VARCHAR(255),
|
||
|
votetype INT4 DEFAULT 0 NOT NULL
|
||
|
);
|
||
|
INSERT INTO decisions_orig (id, proposed, proponent, title, content, status, due, modified, tag, votetype)
|
||
|
SELECT
|
||
|
id,
|
||
|
proposed,
|
||
|
proponent,
|
||
|
title,
|
||
|
content,
|
||
|
status,
|
||
|
due,
|
||
|
modified,
|
||
|
tag,
|
||
|
votetype
|
||
|
FROM
|
||
|
decisions;
|
||
|
DROP INDEX decisions_proposed_idx;
|
||
|
DROP TABLE decisions;
|
||
|
ALTER TABLE decisions_orig
|
||
|
RENAME TO decisions;
|
||
|
|
||
|
CREATE TABLE emails_orig (
|
||
|
voter INT4,
|
||
|
address VARCHAR(255)
|
||
|
);
|
||
|
INSERT INTO emails_orig (voter, address)
|
||
|
SELECT
|
||
|
voter,
|
||
|
address
|
||
|
FROM emails;
|
||
|
DROP TABLE emails;
|
||
|
ALTER TABLE emails_orig
|
||
|
RENAME TO emails;
|
||
|
|
||
|
CREATE TABLE voters_orig (
|
||
|
id INTEGER PRIMARY KEY,
|
||
|
name VARCHAR(255),
|
||
|
enabled INTEGER DEFAULT 0,
|
||
|
reminder VARCHAR(255)
|
||
|
);
|
||
|
INSERT INTO voters_orig (id, name, enabled, reminder)
|
||
|
SELECT
|
||
|
id,
|
||
|
name,
|
||
|
enabled,
|
||
|
reminder
|
||
|
FROM voters;
|
||
|
DROP TABLE voters;
|
||
|
ALTER TABLE voters_orig
|
||
|
RENAME TO voters;
|