80 lines
4 KiB
MySQL
80 lines
4 KiB
MySQL
|
|
DECLARE @TargetVersionNumber INT=4, @VersionNumber INT;
|
||
|
|
IF OBJECT_ID('dbo.[DatabaseVersion]') IS NULL BEGIN
|
||
|
|
CREATE TABLE [dbo].[DatabaseVersion] ([VersionNumber] INT NOT NULL,
|
||
|
|
[VersionDate] DATETIME NOT NULL,
|
||
|
|
[Description] NVARCHAR(200) NULL);
|
||
|
|
INSERT INTO [dbo].[DatabaseVersion]([VersionNumber], [VersionDate], [Description])
|
||
|
|
VALUES(1, GETDATE(), 'Initial version');
|
||
|
|
SET @VersionNumber=1;
|
||
|
|
END;
|
||
|
|
ELSE BEGIN
|
||
|
|
SELECT @VersionNumber=ISNULL(MAX([VersionNumber]), 0)
|
||
|
|
FROM [dbo].[DatabaseVersion];
|
||
|
|
END;
|
||
|
|
|
||
|
|
-- If version target is not met, disable execution for all subsequent batches
|
||
|
|
IF @VersionNumber<>@TargetVersionNumber BEGIN
|
||
|
|
PRINT 'Target version condition not met (Version is not '+CAST(@TargetVersionNumber AS VARCHAR(10))+'). Canceling rest of script.';
|
||
|
|
SET NOEXEC ON;
|
||
|
|
END;
|
||
|
|
GO
|
||
|
|
IF NOT EXISTS (SELECT 1
|
||
|
|
FROM [sys].[columns]
|
||
|
|
WHERE [object_id]=OBJECT_ID('[dbo].[EPDDevice]')AND [name]='HardWare')
|
||
|
|
ALTER TABLE [dbo].[EPDDevice] ADD [HardWare] VARCHAR(50);
|
||
|
|
GO
|
||
|
|
IF NOT EXISTS (SELECT 1
|
||
|
|
FROM [sys].[columns]
|
||
|
|
WHERE [object_id]=OBJECT_ID('[dbo].[EPDDeviceLog]')AND [name]='DllVersion')
|
||
|
|
ALTER TABLE [dbo].[EPDDeviceLog] ADD [DllVersion] VARCHAR(50);
|
||
|
|
GO
|
||
|
|
UPDATE [dbo].[EPDDevice] SET [synced]=0 WHERE [synced] IS NULL;
|
||
|
|
GO
|
||
|
|
CREATE OR ALTER PROCEDURE [dbo].[EPDAddLog] @EPDID INT, @FirmWare VARCHAR(50), @BatNoload_mV INT=0, @Batload_mV INT=0, @CPU_mV INT=0, @ID_Station INT, @ID_Visit INT, @epdType TINYINT, @r_InvalidState INT=0, @r_OperationTimeout INT=0, @r_InsufficientPriv INT=0, @r_OperationFailed INT=0, @r_OtherError INT=0, @WriteTime INT=0, @Registered BIT=0, @HardWare VARCHAR(50)=null, @DllVersion VARCHAR(50)=null
|
||
|
|
AS BEGIN
|
||
|
|
DECLARE @now DATETIME=GETDATE();
|
||
|
|
IF NOT EXISTS (SELECT * FROM [dbo].[EPDDevice] WHERE [EPDID]=@EPDID)
|
||
|
|
INSERT [dbo].[EPDDevice]([EPDID], [FirmWare], [First_Station], [firstseen], [Last_Station], [lastseen], [epdType], [synced], [HardWare])
|
||
|
|
VALUES(@EPDID, @FirmWare, @ID_Station, @now, @ID_Station, @now, @epdType, 0, @HardWare);
|
||
|
|
ELSE
|
||
|
|
UPDATE [dbo].[EPDDevice]
|
||
|
|
SET [Last_Station]=@ID_Station, [lastseen]=@now, [synced]=0, [HardWare]=@HardWare
|
||
|
|
WHERE [EPDID]=@EPDID;
|
||
|
|
|
||
|
|
INSERT [dbo].[EPDDeviceLog]([EPDID], [ID_Station], [ID_Visit], [updated], [BatNoload_mV], [Batload_mV], [CPU_mV], [r_InvalidState], [r_OperationTimeout], [r_InsufficientPriv], [r_OperationFailed], [r_OtherError], [WriteTime], [Registered] , [DllVersion])
|
||
|
|
VALUES(@EPDID, -- EPDID - int
|
||
|
|
@ID_Station, -- ID_Station - int
|
||
|
|
@ID_Visit, -- ID_Visit - int
|
||
|
|
@now, -- updated - datetime
|
||
|
|
@BatNoload_mV, @Batload_mV, @CPU_mV, @r_InvalidState, @r_OperationTimeout, @r_InsufficientPriv, @r_OperationFailed, @r_OtherError, @WriteTime, @Registered, @DllVersion);
|
||
|
|
END;
|
||
|
|
GO
|
||
|
|
CREATE OR ALTER PROCEDURE [EPDDeviceToSync]
|
||
|
|
AS
|
||
|
|
SELECT [EPDID], [FirmWare], [First_Station], [firstseen], [Last_Station]=ISNULL([Last_Station], [First_Station]), [lastseen]=ISNULL([lastseen], [firstseen]), [epdType]=ISNULL([epdType], 0), [synced]=ISNULL([synced], 0), [HardWare]
|
||
|
|
FROM [dbo].[EPDDevice]
|
||
|
|
WHERE([synced]=0 OR [synced] IS NULL);
|
||
|
|
GO
|
||
|
|
GRANT EXECUTE ON [EPDDeviceToSync] TO [eDosStation];
|
||
|
|
GO
|
||
|
|
CREATE OR ALTER PROCEDURE [EPDDeviceSetSynced] @EPDID INT
|
||
|
|
AS
|
||
|
|
UPDATE [dbo].[EPDDevice] SET [synced]=1 WHERE [EPDID]=@EPDID;
|
||
|
|
GO
|
||
|
|
GRANT EXECUTE ON [EPDDeviceSetSynced] TO [eDosStation];
|
||
|
|
GO
|
||
|
|
CREATE OR ALTER PROCEDURE [EPDDeviceLogToSync] @ID_STATION INT, @MaxVisit INT
|
||
|
|
AS
|
||
|
|
SELECT [EPDID], [ID_Station], [ID_Visit], [updated], [BatNoload_mV], [Batload_mV], [CPU_mV], [r_InvalidState], [r_OperationTimeout], [r_InsufficientPriv], [r_OperationFailed], [r_OtherError], [Registered], [WriteTime], [DllVersion]
|
||
|
|
FROM [dbo].[EPDDeviceLog]
|
||
|
|
WHERE([ID_Station]=@ID_STATION)AND([ID_Visit]>@MaxVisit)
|
||
|
|
ORDER BY [ID_Visit];
|
||
|
|
GO
|
||
|
|
GRANT EXECUTE ON [EPDDeviceLogToSync] TO [eDosStation];
|
||
|
|
GO
|
||
|
|
INSERT INTO [dbo].[DatabaseVersion]([VersionNumber], [VersionDate], [Description])
|
||
|
|
VALUES(5, GETDATE(), 'Device sync');
|
||
|
|
GO
|
||
|
|
-- Final Batch: Turn execution back ON for subsequent scripts in the same session
|
||
|
|
SET NOEXEC OFF;
|
||
|
|
GO
|