School Commit Init
This commit is contained in:
@@ -0,0 +1,173 @@
|
||||
USE "Gwent - The Witcher Card Game"
|
||||
|
||||
GO
|
||||
|
||||
CREATE OR ALTER PROCEDURE addToTables (@tableName VARCHAR(255)) AS
|
||||
IF @tableName IN (SELECT Name FROM Tables)
|
||||
BEGIN
|
||||
PRINT 'Table already present in Tables'
|
||||
RETURN
|
||||
END
|
||||
IF @tableName NOT IN (SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES)
|
||||
BEGIN
|
||||
PRINT 'Table doesn''t exists'
|
||||
RETURN
|
||||
END
|
||||
INSERT INTO Tables (Name) VALUES (@tableName)
|
||||
|
||||
GO
|
||||
|
||||
CREATE OR ALTER PROCEDURE addToViews (@viewName VARCHAR(255)) AS
|
||||
IF @viewName IN (SELECT Name FROM Views)
|
||||
BEGIN
|
||||
PRINT 'View already present in Views'
|
||||
RETURN
|
||||
END
|
||||
IF @viewName NOT IN (SELECT TABLE_NAME FROM INFORMATION_SCHEMA.VIEWS)
|
||||
BEGIN
|
||||
PRINT 'View doesn''t exists'
|
||||
RETURN
|
||||
END
|
||||
INSERT INTO Views (Name) VALUES (@viewName)
|
||||
|
||||
GO
|
||||
|
||||
CREATE OR ALTER PROCEDURE addTests (@testName VARCHAR(255)) AS
|
||||
IF @testName IN (SELECT Name FROM Tests)
|
||||
BEGIN
|
||||
PRINT 'Test already present in Tests'
|
||||
RETURN
|
||||
END
|
||||
INSERT INTO Tests (Name) VALUES (@testName)
|
||||
|
||||
GO
|
||||
|
||||
CREATE OR ALTER PROCEDURE addTestTables (@testName VARCHAR(255), @tableName VARCHAR(255), @rows INT, @position INT) AS
|
||||
IF @tableName NOT IN (SELECT Name FROM Tables)
|
||||
BEGIN
|
||||
PRINT 'Table not present in Tables'
|
||||
RETURN
|
||||
END
|
||||
IF @testName NOT IN (SELECT Name FROM Tests)
|
||||
BEGIN
|
||||
PRINT 'Test not present in Tests'
|
||||
RETURN
|
||||
END
|
||||
IF EXISTS(
|
||||
SELECT 1 FROM TestTables tt JOIN Tests t on tt.TestID = t.TestID
|
||||
WHERE t.Name = @testName and tt.Position = @position
|
||||
)
|
||||
BEGIN
|
||||
PRINT 'Position already exists in TestTables for current test'
|
||||
RETURN
|
||||
END
|
||||
INSERT INTO TestTables (TableID, TestID, NoOfRows, Position) VALUES
|
||||
(
|
||||
(SELECT TableID from Tables WHERE Name = @tableName),
|
||||
(SELECT TestID from Tests WHERE Name = @testName),
|
||||
@rows,
|
||||
@position
|
||||
)
|
||||
|
||||
GO
|
||||
|
||||
CREATE OR ALTER PROCEDURE addTestViews (@testName VARCHAR(255), @viewName VARCHAR(255)) AS
|
||||
IF @viewName NOT IN (SELECT Name FROM Views)
|
||||
BEGIN
|
||||
PRINT 'View not present in Views'
|
||||
RETURN
|
||||
END
|
||||
IF @testName NOT IN (SELECT Name FROM Tests)
|
||||
BEGIN
|
||||
PRINT 'Test not present in Tests'
|
||||
RETURN
|
||||
END
|
||||
INSERT INTO TestViews (ViewID, TestID) VALUES
|
||||
(
|
||||
(SELECT ViewID from Views WHERE Name = @viewName),
|
||||
(SELECT TestID from Tests WHERE Name = @testName)
|
||||
)
|
||||
|
||||
GO
|
||||
|
||||
CREATE OR ALTER PROCEDURE runTest (@testName VARCHAR(255)) AS
|
||||
DECLARE @startTime DATETIME
|
||||
DECLARE @endTime DATETIME
|
||||
DECLARE @insertStartTime DATETIME
|
||||
DECLARE @insertEndTime DATETIME
|
||||
DECLARE @selectStartTime DATETIME
|
||||
DECLARE @selectEndTime DATETIME
|
||||
DECLARE @table VARCHAR(255)
|
||||
DECLARE @view VARCHAR(255)
|
||||
DECLARE @noOfTables INT
|
||||
DECLARE @noOfViews INT
|
||||
DECLARE @offset INT
|
||||
DECLARE @rows INT
|
||||
DECLARE @testRunID INT
|
||||
DECLARE @command VARCHAR(255)
|
||||
INSERT INTO TestRuns (Description) VALUES
|
||||
(
|
||||
'Test run for ' + @testName
|
||||
)
|
||||
SET @testRunID =(SELECT MAX(TestRunID) FROM TestRuns)
|
||||
|
||||
SET @offset = 0
|
||||
SET @noOfTables = (SELECT COUNT(*) FROM TestTables tt JOIN Tests t on tt.TestID = t.TestID WHERE t.Name = @testName)
|
||||
SET @noOfViews = (SELECT COUNT(*) FROM TestViews tv JOIN Tests t on tv.TestID = t.TestID WHERE t.Name = @testName)
|
||||
IF @testName NOT IN (SELECT Name FROM Tests)
|
||||
BEGIN
|
||||
PRINT 'Test not present in Tests'
|
||||
RETURN
|
||||
END
|
||||
|
||||
SET @startTime = GETDATE()
|
||||
WHILE @offset < @noOfTables
|
||||
BEGIN
|
||||
SET @table = (SELECT tab.Name FROM TestTables tt JOIN Tests t on tt.TestID = t.TestID JOIN Tables tab on tt.TableID = tab.TableID WHERE t.Name = @testName ORDER BY tt.Position OFFSET @offset ROWS FETCH NEXT 1 ROWS ONLY)
|
||||
EXEC ('delete from ' + @table)
|
||||
SET @offset = @offset + 1
|
||||
END
|
||||
SET @offset = 0
|
||||
|
||||
WHILE @offset < @noOfTables
|
||||
BEGIN
|
||||
SET @table = (SELECT tab.Name FROM TestTables tt JOIN Tests t on tt.TestID = t.TestID JOIN Tables tab on tt.TableID = tab.TableID WHERE t.Name = @testName ORDER BY tt.Position DESC OFFSET @offset ROWS FETCH NEXT 1 ROWS ONLY)
|
||||
SET @rows = (SELECT NoOfRows FROM TestTables tt JOIN Tests t on tt.TestID = t.TestID JOIN Tables tab on tt.TableID = tab.TableID WHERE t.Name = @testName ORDER BY tt.Position DESC OFFSET @offset ROWS FETCH NEXT 1 ROWS ONLY)
|
||||
SET @insertStartTime = GETDATE()
|
||||
SET @command = 'populate' + @table
|
||||
EXEC @command @rows
|
||||
SET @insertEndTime = GETDATE()
|
||||
INSERT INTO TestRunTables (TestRunID, TableID, StartAt, EndAt) VALUES
|
||||
(
|
||||
@testRunID,
|
||||
(SELECT TableID FROM Tables WHERE Name = @table),
|
||||
@insertStartTime,
|
||||
@insertEndTime
|
||||
)
|
||||
SET @offset = @offset + 1
|
||||
END
|
||||
SET @offset = 0
|
||||
WHILE @offset < @noOfViews
|
||||
BEGIN
|
||||
SET @view = (SELECT v.Name FROM TestViews tv JOIN Tests t on tv.TestID = t.TestID JOIN Views v on tv.ViewID = v.ViewID WHERE t.Name = @testName ORDER BY tv.ViewID OFFSET @offset ROWS FETCH NEXT 1 ROWS ONLY)
|
||||
SET @selectStartTime = GETDATE()
|
||||
EXEC ('select * from ' + @view)
|
||||
SET @selectEndTime = GETDATE()
|
||||
INSERT INTO TestRunViews (TestRunID, ViewID, StartAt, EndAt) VALUES
|
||||
(
|
||||
@testRunID,
|
||||
(SELECT ViewID FROM Views WHERE Name = @view),
|
||||
@selectStartTime,
|
||||
@selectEndTime
|
||||
)
|
||||
SET @offset = @offset + 1
|
||||
END
|
||||
SET @endTime = GETDATE()
|
||||
UPDATE TestRuns SET StartAt = @startTime, EndAt = @endTime WHERE TestRunID = @testRunID
|
||||
|
||||
|
||||
SELECT * FROM TestRuns
|
||||
SELECT * FROM TestRunTables
|
||||
SELECT * FROM TestRunViews
|
||||
|
||||
|
||||
Reference in New Issue
Block a user