-- You should not modify if this have pushed to Github, unless it does serious wrong with the db.
BEGIN TRANSACTION;

-- Create new monitor_checks table
create table monitor_checks
(
    id         INTEGER
                    constraint monitor_checks_pk
                    primary key autoincrement,
    type       VARCHAR(50) not null,
    value      TEXT,
    monitor_id INTEGER     not null
                    constraint monitor_checks_monitor_id_fk
                        references monitor
                        on update cascade on delete cascade
);

insert into monitor_checks(id, type, value, monitor_id)
select id, type, value, monitor_id
from monitor_checks;

create unique index monitor_checks_id_uindex
    on monitor_checks (id);


-- Copy over the http status to the new monitor_checks table as a separate check
insert into monitor_checks(monitor_id, type, value)
select id, 'HTTP_STATUS_CODE_SHOULD_EQUAL', accepted_statuscodes_json
from monitor;

-- Copy over the keyword column from the monitor table to the new monitor_checks table as a separate check
insert into monitor_checks(monitor_id, type, value)
select id, 'RESPONSE_SHOULD_CONTAIN', keyword
from monitor;

-- Delete the http status and keyword columns from the monitor table
create table monitor_dg_tmp
(
    id                 INTEGER not null
        primary key autoincrement,
    name               VARCHAR(150),
    active             BOOLEAN  default 1 not null,
    user_id            INTEGER
                               references user
                                   on update cascade on delete set null,
    interval           INTEGER  default 20 not null,
    url                TEXT,
    type               VARCHAR(20),
    weight             INTEGER  default 2000,
    hostname           VARCHAR(255),
    port               INTEGER,
    created_date       DATETIME default (DATETIME('now')) not null,
    maxretries         INTEGER  default 0 not null,
    ignore_tls         BOOLEAN  default 0 not null,
    upside_down        BOOLEAN  default 0 not null,
    maxredirects       INTEGER  default 10 not null,
    dns_resolve_type   VARCHAR(5),
    dns_resolve_server VARCHAR(255),
    dns_last_result    VARCHAR(255)
);

insert into monitor_dg_tmp(id, name, active, user_id, interval, url, type, weight, hostname, port, created_date, maxretries, ignore_tls, upside_down,
                           maxredirects, dns_resolve_type, dns_resolve_server, dns_last_result)
select id,
       name,
       active,
       user_id,
       interval,
       url,
       type,
       weight,
       hostname,
       port,
       created_date,
       maxretries,
       ignore_tls,
       upside_down,
       maxredirects,
       dns_resolve_type,
       dns_resolve_server,
       dns_last_result
from monitor;

drop table monitor;

alter table monitor_dg_tmp
    rename to monitor;

create index user_id
    on monitor (user_id);
COMMIT;