-- MokoSuiteBackup 01.41.00 — Multi-remote storage destinations (#97)

CREATE TABLE IF NOT EXISTS `#__mokosuitebackup_remotes` (
    `id` INT(11) UNSIGNED NOT NULL AUTO_INCREMENT,
    `profile_id` INT(11) UNSIGNED NOT NULL,
    `title` VARCHAR(255) NOT NULL DEFAULT '',
    `type` VARCHAR(20) NOT NULL DEFAULT 'sftp' COMMENT 'sftp, s3, google_drive',
    `enabled` TINYINT(1) NOT NULL DEFAULT 1,
    `params` MEDIUMTEXT COMMENT 'JSON: type-specific settings',
    `ordering` INT(11) NOT NULL DEFAULT 0,
    `created` DATETIME NOT NULL DEFAULT '0000-00-00 00:00:00',
    `modified` DATETIME NOT NULL DEFAULT '0000-00-00 00:00:00',
    PRIMARY KEY (`id`),
    KEY `idx_profile` (`profile_id`),
    KEY `idx_enabled` (`profile_id`, `enabled`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

-- Migrate existing SFTP remote configs into new table
INSERT INTO `#__mokosuitebackup_remotes` (`profile_id`, `title`, `type`, `enabled`, `params`, `ordering`, `created`)
SELECT
    `id`,
    CONCAT(`title`, ' - SFTP'),
    'sftp',
    1,
    JSON_OBJECT(
        'host', `sftp_host`,
        'port', `sftp_port`,
        'username', `sftp_username`,
        'auth_type', `sftp_auth_type`,
        'password', `sftp_password`,
        'key_data', COALESCE(`sftp_key_data`, ''),
        'passphrase', `sftp_passphrase`,
        'path', `sftp_path`
    ),
    1,
    NOW()
FROM `#__mokosuitebackup_profiles`
WHERE `remote_storage` = 'sftp' AND `sftp_host` != '';

-- Migrate existing S3 remote configs into new table
INSERT INTO `#__mokosuitebackup_remotes` (`profile_id`, `title`, `type`, `enabled`, `params`, `ordering`, `created`)
SELECT
    `id`,
    CONCAT(`title`, ' - S3'),
    's3',
    1,
    JSON_OBJECT(
        'endpoint', `s3_endpoint`,
        'region', `s3_region`,
        'access_key', `s3_access_key`,
        'secret_key', `s3_secret_key`,
        'bucket', `s3_bucket`,
        'path', `s3_path`
    ),
    1,
    NOW()
FROM `#__mokosuitebackup_profiles`
WHERE `remote_storage` = 's3' AND `s3_bucket` != '';

-- Migrate existing Google Drive remote configs into new table
INSERT INTO `#__mokosuitebackup_remotes` (`profile_id`, `title`, `type`, `enabled`, `params`, `ordering`, `created`)
SELECT
    `id`,
    CONCAT(`title`, ' - Google Drive'),
    'google_drive',
    1,
    JSON_OBJECT(
        'client_id', `gdrive_client_id`,
        'client_secret', `gdrive_client_secret`,
        'refresh_token', `gdrive_refresh_token`,
        'folder_id', `gdrive_folder_id`
    ),
    1,
    NOW()
FROM `#__mokosuitebackup_profiles`
WHERE `remote_storage` = 'google_drive' AND `gdrive_client_id` != '';

-- Migrate existing FTP remote configs into new table
INSERT INTO `#__mokosuitebackup_remotes` (`profile_id`, `title`, `type`, `enabled`, `params`, `ordering`, `created`)
SELECT
    `id`,
    CONCAT(`title`, ' - FTP'),
    'ftp',
    1,
    JSON_OBJECT(
        'host', `ftp_host`,
        'port', `ftp_port`,
        'username', `ftp_username`,
        'password', `ftp_password`,
        'path', `ftp_path`,
        'passive', `ftp_passive`,
        'ssl', `ftp_ssl`
    ),
    1,
    NOW()
FROM `#__mokosuitebackup_profiles`
WHERE `remote_storage` = 'ftp' AND `ftp_host` != '';
