mirror of https://github.com/gophish/gophish
97 lines
2.2 KiB
MySQL
97 lines
2.2 KiB
MySQL
|
|
||
|
-- +goose Up
|
||
|
-- SQL in section 'Up' is executed when this migration is applied
|
||
|
ALTER TABLE campaigns RENAME TO campaigns_old;
|
||
|
/*
|
||
|
The new campaigns table will rely on a "flows" table that is basically a list of tasks to accomplish.
|
||
|
|
||
|
This will include sending emails, hosting landing pages, or possibly taking other action as needed,
|
||
|
including running scripts, sending HTTP requests, etc.
|
||
|
*/
|
||
|
CREATE TABLE campaigns ("id" integer primary key autoincrement, "user_id" bigint, "name" varchar(255) NOT NULL, "created_date" datetime, "completed_date" datetime, "flow_id" bigint, "status" varchar(255));
|
||
|
|
||
|
INSERT INTO campaigns
|
||
|
(
|
||
|
id,
|
||
|
user_id,
|
||
|
name,
|
||
|
created_date,
|
||
|
completed_date,
|
||
|
status
|
||
|
)
|
||
|
SELECT
|
||
|
campaigns_old.id,
|
||
|
campaigns_old.user_id,
|
||
|
campaigns_old.name,
|
||
|
campaigns_old.created_date,
|
||
|
campaigns_old.completed_date,
|
||
|
campaigns_old.status
|
||
|
FROM campaigns_old;
|
||
|
|
||
|
/* Create our flows table */
|
||
|
|
||
|
CREATE TABLE "flows" ("id" integer primary key autoincrement,"user_id" bigint,"previous_id" bigint,"next_id" bigint,"campaign_id" bigint, "metadata" blob,"task" varchar(255));
|
||
|
|
||
|
/* Setup our email flows */
|
||
|
|
||
|
INSERT INTO flows (
|
||
|
user_id,
|
||
|
campaign_id,
|
||
|
task,
|
||
|
metadata
|
||
|
)
|
||
|
SELECT
|
||
|
campaigns_old.user_id,
|
||
|
campaigns_old.id,
|
||
|
"SEND_EMAIL",
|
||
|
'{' ||
|
||
|
'"smtp_id":' || campaigns_old.smtp_id || ',' ||
|
||
|
'"template_id":' || campaigns_old.template_id ||
|
||
|
'}'
|
||
|
FROM campaigns_old;
|
||
|
|
||
|
/* Setup our landing page flows */
|
||
|
|
||
|
INSERT INTO flows (
|
||
|
user_id,
|
||
|
campaign_id,
|
||
|
task,
|
||
|
metadata,
|
||
|
previous_id
|
||
|
)
|
||
|
SELECT
|
||
|
campaigns_old.user_id,
|
||
|
campaigns_old.id as campaign_id,
|
||
|
"LANDING_PAGE",
|
||
|
'{' ||
|
||
|
'"page_id" : ' || campaigns_old.page_id || ',' ||
|
||
|
'"url" : "' || campaigns_old.url || '"' ||
|
||
|
'}',
|
||
|
flows.id as flow_id
|
||
|
FROM campaigns_old, flows
|
||
|
WHERE flows.id IN (
|
||
|
SELECT id FROM flows
|
||
|
WHERE campaign_id=campaigns_old.id
|
||
|
AND task="SEND_EMAIL"
|
||
|
);
|
||
|
|
||
|
/*
|
||
|
Finally, we need to update our email flows to point to the landing page
|
||
|
flows.
|
||
|
*/
|
||
|
|
||
|
UPDATE flows
|
||
|
SET
|
||
|
next_id = (
|
||
|
SELECT f2.id
|
||
|
FROM flows AS f2
|
||
|
WHERE f2.previous_id=flows.id
|
||
|
AND f2.campaign_id = flows.campaign_id
|
||
|
AND f2.task = "LANDING_PAGE"
|
||
|
)
|
||
|
WHERE task = "SEND_EMAIL"
|
||
|
|
||
|
-- +goose Down
|
||
|
-- SQL section 'Down' is executed when this migration is rolled back
|
||
|
|