Fixed isses with SMTP table migration: better names on created objects, all SMTP records are imported with appropriate user_id, entries are de-duped based on user_id:host:from_address tuple

pull/169/head
William Woodson 2016-02-27 19:38:54 -06:00
parent 7ca63f55be
commit 56c9ea070b
3 changed files with 61 additions and 41 deletions

View File

@ -1,41 +0,0 @@
-- +goose Up
-- SQL in section 'Up' is executed when this migration is applied
ALTER TABLE campaigns ADD COLUMN smtp_id bigint;
UPDATE campaigns
SET smtp_id = (SELECT smtp.smtp_id FROM smtp)
WHERE campaigns.id = (
SELECT campaigns.id
FROM smtp,campaigns
WHERE smtp.campaign_id=campaigns.id
)
; -- sure hope the current smtp table works like I think it does
ALTER TABLE smtp RENAME TO smtp_old;
CREATE TABLE smtp(
id integer primary key autoincrement,
user_id bigint,
interface_type varchar(255),
name varchar(255),
host varchar(255),
username varchar(255),
password varchar(255),
from_address varchar(255),
modified_date datetime default CURRENT_TIMESTAMP,
ignore_cert_errors BOOLEAN
);
INSERT INTO smtp (id,interface_type,name,host,username,from_address,ignore_cert_errors)
SELECT smtp_id,'SMTP',smtp_id,host,username,from_address,ignore_cert_errors
FROM smtp_old
;
UPDATE smtp
SET user_id = (SELECT campaigns.user_id FROM campaigns)
WHERE smtp.id = (
SELECT smtp.id
FROM smtp,campaigns
WHERE smtp.id=campaigns.smtp_id
)
;
DROP TABLE smtp_old;
-- +goose Down
-- SQL section 'Down' is executed when this migration is rolled back

View File

@ -0,0 +1,9 @@
-- +goose Up
-- SQL in section 'Up' is executed when this migration is applied
ALTER TABLE pages ADD COLUMN capture_credentials BOOLEAN;
ALTER TABLE pages ADD COLUMN capture_passwords BOOLEAN;
-- +goose Down
-- SQL section 'Down' is executed when this migration is rolled back

View File

@ -0,0 +1,52 @@
-- +goose Up
-- SQL in section 'Up' is executed when this migration is applied
-- Move the relationship between campaigns and smtp to campaigns
ALTER TABLE campaigns ADD COLUMN "smtp_id" bigint;
UPDATE campaigns
SET smtp_id = (
SELECT smtp.smtp_id
FROM smtp,campaigns
WHERE campaigns.id=smtp.campaign_id
)
;
-- Add the appropriate user_id to each smtp record
ALTER TABLE smtp ADD COLUMN "user_id" bigint;
UPDATE smtp
SET user_id = (
SELECT campaigns.user_id
FROM smtp,campaigns
WHERE smtp.smtp_id=campaigns.smtp_id
)
;
-- Create a new table to store smtp records
ALTER TABLE smtp RENAME TO smtp_old;
CREATE TABLE smtp(
id integer primary key autoincrement,
user_id bigint,
interface_type varchar(255),
name varchar(255),
host varchar(255),
username varchar(255),
password varchar(255),
from_address varchar(255),
modified_date datetime default CURRENT_TIMESTAMP,
ignore_cert_errors BOOLEAN
);
-- Import existing smtp records into new format and drop the old table
INSERT INTO smtp (id,user_id,interface_type,name,host,username,from_address,ignore_cert_errors)
SELECT smtp_id,user_id,'SMTP',
'Imported campaign via ' || COALESCE(host,'') || ' from ' || COALESCE(from_address,''),
host,username,from_address,ignore_cert_errors
FROM smtp_old
-- Prevent insertion of duplicate records
WHERE smtp_id IN (
SELECT smtp_id
FROM smtp_old
GROUP BY user_id,host,from_address
)
;
DROP TABLE smtp_old;
-- +goose Down
-- SQL section 'Down' is executed when this migration is rolled back