--
-- This updates a 1.27.0 database to 1.27.1
--

--
-- Add Controls definition for Wanscam
--
INSERT INTO Controls 
SELECT * FROM (SELECT NULL as Id,
                     'WanscamPT' as Name,
                     'Remote' as Type,
                     'Wanscam' as Protocol,
                     1 as CanWake,
                     1 as CanSleep,
                     1 as CanReset,
                     0 as CanZoom,
                     0 as CanAutoZoom,
                     0 as CanZoomAbs,
                     0 as CanZoomRel,
                     0 as CanZoomCon,
                     0 as MinZoomRange,
                     0 as MaxZoomRange,
                     0 as MinZoomStep,
                     0 as MaxZoomStep,
                     0 as HasZoomSpeed,
                     0 as MinZoomSpeed,
                     0 as MaxZoomSpeed,
                     0 as CanFocus,
                     0 as CanAutoFocus,
                     0 as CanFocusAbs,
                     0 as CanFocusRel,
                     0 as CanFocusCon,
                     0 as MinFocusRange,
                     0 as MaxFocusRange,
                     0 as MinFocusStep,
                     0 as MaxFocusStep,
                     0 as HasFocusSpeed,
                     0 as MinFocusSpeed,
                     0 as MaxFocusSpeed,
                     1 as CanIris,
                     0 as CanAutoIris,
                     1 as CanIrisAbs,
                     0 as CanIrisRel,
                     0 as CanIrisCon,
                     0 as MinIrisRange,
                     16 as MaxIrisRange,
                     0 as MinIrisStep,
                     0 as MaxIrisStep,
                     0 as HasIrisSpeed,
                     0 as MinIrisSpeed,
                     0 as MaxIrisSpeed,
                     0 as CanGain,
                     0 as CanAutoGain,
                     0 as CanGainAbs,
                     0 as CanGainRel,
                     0 as CanGainCon,
                     0 as MinGainRange,
                     0 as MaxGainRange,
                     0 as MinGainStep,
                     0 as MaxGainStep,
                     0 as HasGainSpeed,
                     0 as MinGainSpeed,
                     0 as MaxGainSpeed,
                     1 as CanWhite,
                     0 as CanAutoWhite,
                     1 as CanWhiteAbs,
                     0 as CanWhiteRel,
                     0 as CanWhiteCon,
                     0 as MinWhiteRange,
                     16 as MaxWhiteRange,
                     0 as MinWhiteStep,
                     0 as MaxWhiteStep,
                     0 as HasWhiteSpeed,
                     0 as MinWhiteSpeed,
                     0 as MaxWhiteSpeed,
                     1 as HasPresets,
                     16 as NumPresets,
                     1 as HasHomePreset,
                     1 as CanSetPresets,
                     1 as CanMove,
                     1 as CanMoveDiag,
                     0 as CanMoveMap,
                     0 as CanMoveAbs,
                     0 as CanMoveRel,
                     1 as CanMoveCon,
                     1 as CanPan,
                     0 as MinPanRange,
                     0 as MaxPanRange,
                     0 as MinPanStep,
                     0 as MaxPanStep,
                     0 as HasPanSpeed,
                     0 as MinPanSpeed,
                     0 as MaxPanSpeed,
                     0 as HasTurboPan,
                     0 as TurboPanSpeed,
                     1 as CanTilt,
                     0 as MinTiltRange,
                     0 as MaxTiltRange,
                     0 as MinTiltStep,
                     0 as MaxTiltStep,
                     0 as HasTiltSpeed,
                     0 as MinTiltSpeed,
                     0 as MaxTiltSpeed,
                     0 as HasTurboTilt,
                     0 as TurboTiltSpeed,
                     0 as CanAutoScan,
                     0 as NumScanPaths) AS tmp
WHERE NOT EXISTS (
    SELECT Name FROM Controls WHERE name = 'WanscamPT'
) LIMIT 1;

-- Add extend alarm frame count to zone definition and Presets
SET @s = (SELECT IF(
	(SELECT COUNT(*)
	FROM INFORMATION_SCHEMA.COLUMNS
	WHERE table_name = 'Zones'
	AND table_schema = DATABASE()
	AND column_name = 'ExtendAlarmFrames'
	) > 0,
"SELECT 'Column ExtendAlarmFrames exists in Zones'",
"ALTER TABLE `Zones` ADD `ExtendAlarmFrames` smallint(5) unsigned not null default 0 AFTER `OverloadFrames`"
));

PREPARE stmt FROM @s;
EXECUTE stmt;

SET @s = (SELECT IF(
	(SELECT COUNT(*)
	FROM INFORMATION_SCHEMA.COLUMNS
	WHERE table_name = 'ZonePresets'
	AND table_schema = DATABASE()
	AND column_name = 'ExtendAlarmFrames'
	) > 0,
"SELECT 'Column ExtendAlarmFrames exists in ZonePresets'",
"ALTER TABLE `ZonePresets` ADD `ExtendAlarmFrames` smallint(5) unsigned not null default 0 AFTER `OverloadFrames`"
));

PREPARE stmt FROM @s;
EXECUTE stmt;

--
-- Add MotionSkipFrame field for controlling how many frames motion detection should skip.
--

SET @s = (SELECT IF(
	(SELECT COUNT(*)
	FROM INFORMATION_SCHEMA.COLUMNS
	WHERE table_name = 'Monitors'
	AND table_schema = DATABASE()
	AND column_name = 'MotionFrameSkip'
	) > 0,
"SELECT 1",
"ALTER TABLE `Monitors` ADD `MotionFrameSkip` smallint(5) unsigned NOT NULL default '0' AFTER `FrameSkip`"
));

PREPARE stmt FROM @s;
EXECUTE stmt;

--
-- Add Monitor Options field; used for specifying Ffmpeg AVoptions like rtsp_transport http or libVLC options
--
SET @s = (SELECT IF(
	(SELECT COUNT(*)
	FROM INFORMATION_SCHEMA.COLUMNS
	WHERE table_name = 'Monitors'
	AND table_schema = DATABASE()
	AND column_name = 'Options'
	) > 0,
"SELECT 'Column Options already exists in Monitors'",
"ALTER TABLE `Monitors` ADD `Options` varchar(255) not null default '' AFTER `Path`"
));

PREPARE stmt FROM @s;
EXECUTE stmt;

--
-- Add V4LMultiBuffer and V4LCapturesPerFrame to Monitor
--

SET @s = (SELECT IF(
    (SELECT COUNT(*)
    FROM INFORMATION_SCHEMA.COLUMNS
    WHERE table_name = 'Monitors'
    AND table_schema = DATABASE()
    AND column_name = 'V4LMultiBuffer'
    ) > 0,
"SELECT 'Column V4LMultiBuffer exists in Monitors'",
"ALTER TABLE `Monitors` ADD `V4LMultiBuffer` tinyint(1) unsigned AFTER `Format`"
));

PREPARE stmt FROM @s;
EXECUTE stmt;

SET @s = (SELECT IF(
    (SELECT COUNT(*)
    FROM INFORMATION_SCHEMA.COLUMNS
    WHERE table_name = 'Monitors'
    AND table_schema = DATABASE()
    AND column_name = 'V4LCapturesPerFrame'
    ) > 0,
"SELECT 'Column V4LCapturesPerFrame exists in Monitors'",
"ALTER TABLE `Monitors` ADD `V4LCapturesPerFrame` tinyint(3) unsigned AFTER `V4LMultiBuffer`"
));

PREPARE stmt FROM @s;
EXECUTE stmt;