School Commit Init
This commit is contained in:
@@ -0,0 +1,480 @@
|
||||
if exists (select * from dbo.sysobjects where id = object_id(N'[FK_TestRunTables_Tables]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1)
|
||||
|
||||
ALTER TABLE [TestRunTables] DROP CONSTRAINT FK_TestRunTables_Tables
|
||||
|
||||
GO
|
||||
|
||||
|
||||
|
||||
if exists (select * from dbo.sysobjects where id = object_id(N'[FK_TestTables_Tables]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1)
|
||||
|
||||
ALTER TABLE [TestTables] DROP CONSTRAINT FK_TestTables_Tables
|
||||
|
||||
GO
|
||||
|
||||
|
||||
|
||||
if exists (select * from dbo.sysobjects where id = object_id(N'[FK_TestRunTables_TestRuns]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1)
|
||||
|
||||
ALTER TABLE [TestRunTables] DROP CONSTRAINT FK_TestRunTables_TestRuns
|
||||
|
||||
GO
|
||||
|
||||
|
||||
|
||||
if exists (select * from dbo.sysobjects where id = object_id(N'[FK_TestRunViews_TestRuns]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1)
|
||||
|
||||
ALTER TABLE [TestRunViews] DROP CONSTRAINT FK_TestRunViews_TestRuns
|
||||
|
||||
GO
|
||||
|
||||
|
||||
|
||||
if exists (select * from dbo.sysobjects where id = object_id(N'[FK_TestTables_Tests]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1)
|
||||
|
||||
ALTER TABLE [TestTables] DROP CONSTRAINT FK_TestTables_Tests
|
||||
|
||||
GO
|
||||
|
||||
|
||||
|
||||
if exists (select * from dbo.sysobjects where id = object_id(N'[FK_TestViews_Tests]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1)
|
||||
|
||||
ALTER TABLE [TestViews] DROP CONSTRAINT FK_TestViews_Tests
|
||||
|
||||
GO
|
||||
|
||||
|
||||
|
||||
if exists (select * from dbo.sysobjects where id = object_id(N'[FK_TestRunViews_Views]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1)
|
||||
|
||||
ALTER TABLE [TestRunViews] DROP CONSTRAINT FK_TestRunViews_Views
|
||||
|
||||
GO
|
||||
|
||||
|
||||
|
||||
if exists (select * from dbo.sysobjects where id = object_id(N'[FK_TestViews_Views]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1)
|
||||
|
||||
ALTER TABLE [TestViews] DROP CONSTRAINT FK_TestViews_Views
|
||||
|
||||
GO
|
||||
|
||||
|
||||
|
||||
if exists (select * from dbo.sysobjects where id = object_id(N'[Tables]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
|
||||
|
||||
drop table [Tables]
|
||||
|
||||
GO
|
||||
|
||||
|
||||
|
||||
if exists (select * from dbo.sysobjects where id = object_id(N'[TestRunTables]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
|
||||
|
||||
drop table [TestRunTables]
|
||||
|
||||
GO
|
||||
|
||||
|
||||
|
||||
if exists (select * from dbo.sysobjects where id = object_id(N'[TestRunViews]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
|
||||
|
||||
drop table [TestRunViews]
|
||||
|
||||
GO
|
||||
|
||||
|
||||
|
||||
if exists (select * from dbo.sysobjects where id = object_id(N'[TestRuns]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
|
||||
|
||||
drop table [TestRuns]
|
||||
|
||||
GO
|
||||
|
||||
|
||||
|
||||
if exists (select * from dbo.sysobjects where id = object_id(N'[TestTables]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
|
||||
|
||||
drop table [TestTables]
|
||||
|
||||
GO
|
||||
|
||||
|
||||
|
||||
if exists (select * from dbo.sysobjects where id = object_id(N'[TestViews]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
|
||||
|
||||
drop table [TestViews]
|
||||
|
||||
GO
|
||||
|
||||
|
||||
|
||||
if exists (select * from dbo.sysobjects where id = object_id(N'[Tests]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
|
||||
|
||||
drop table [Tests]
|
||||
|
||||
GO
|
||||
|
||||
|
||||
|
||||
if exists (select * from dbo.sysobjects where id = object_id(N'[Views]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
|
||||
|
||||
drop table [Views]
|
||||
|
||||
GO
|
||||
|
||||
|
||||
|
||||
CREATE TABLE [Tables] (
|
||||
|
||||
[TableID] [int] IDENTITY (1, 1) NOT NULL ,
|
||||
|
||||
[Name] [nvarchar] (50) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL
|
||||
|
||||
) ON [PRIMARY]
|
||||
|
||||
GO
|
||||
|
||||
|
||||
|
||||
CREATE TABLE [TestRunTables] (
|
||||
|
||||
[TestRunID] [int] NOT NULL ,
|
||||
|
||||
[TableID] [int] NOT NULL ,
|
||||
|
||||
[StartAt] [datetime] NOT NULL ,
|
||||
|
||||
[EndAt] [datetime] NOT NULL
|
||||
|
||||
) ON [PRIMARY]
|
||||
|
||||
GO
|
||||
|
||||
|
||||
|
||||
CREATE TABLE [TestRunViews] (
|
||||
|
||||
[TestRunID] [int] NOT NULL ,
|
||||
|
||||
[ViewID] [int] NOT NULL ,
|
||||
|
||||
[StartAt] [datetime] NOT NULL ,
|
||||
|
||||
[EndAt] [datetime] NOT NULL
|
||||
|
||||
) ON [PRIMARY]
|
||||
|
||||
GO
|
||||
|
||||
|
||||
|
||||
CREATE TABLE [TestRuns] (
|
||||
|
||||
[TestRunID] [int] IDENTITY (1, 1) NOT NULL ,
|
||||
|
||||
[Description] [nvarchar] (2000) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
|
||||
|
||||
[StartAt] [datetime] NULL ,
|
||||
|
||||
[EndAt] [datetime] NULL
|
||||
|
||||
) ON [PRIMARY]
|
||||
|
||||
GO
|
||||
|
||||
|
||||
|
||||
CREATE TABLE [TestTables] (
|
||||
|
||||
[TestID] [int] NOT NULL ,
|
||||
|
||||
[TableID] [int] NOT NULL ,
|
||||
|
||||
[NoOfRows] [int] NOT NULL ,
|
||||
|
||||
[Position] [int] NOT NULL
|
||||
|
||||
) ON [PRIMARY]
|
||||
|
||||
GO
|
||||
|
||||
|
||||
|
||||
CREATE TABLE [TestViews] (
|
||||
|
||||
[TestID] [int] NOT NULL ,
|
||||
|
||||
[ViewID] [int] NOT NULL
|
||||
|
||||
) ON [PRIMARY]
|
||||
|
||||
GO
|
||||
|
||||
|
||||
|
||||
CREATE TABLE [Tests] (
|
||||
|
||||
[TestID] [int] IDENTITY (1, 1) NOT NULL ,
|
||||
|
||||
[Name] [nvarchar] (50) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL
|
||||
|
||||
) ON [PRIMARY]
|
||||
|
||||
GO
|
||||
|
||||
|
||||
|
||||
CREATE TABLE [Views] (
|
||||
|
||||
[ViewID] [int] IDENTITY (1, 1) NOT NULL ,
|
||||
|
||||
[Name] [nvarchar] (50) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL
|
||||
|
||||
) ON [PRIMARY]
|
||||
|
||||
GO
|
||||
|
||||
|
||||
|
||||
ALTER TABLE [Tables] WITH NOCHECK ADD
|
||||
|
||||
CONSTRAINT [PK_Tables] PRIMARY KEY CLUSTERED
|
||||
|
||||
(
|
||||
|
||||
[TableID]
|
||||
|
||||
) ON [PRIMARY]
|
||||
|
||||
GO
|
||||
|
||||
|
||||
|
||||
ALTER TABLE [TestRunTables] WITH NOCHECK ADD
|
||||
|
||||
CONSTRAINT [PK_TestRunTables] PRIMARY KEY CLUSTERED
|
||||
|
||||
(
|
||||
|
||||
[TestRunID],
|
||||
|
||||
[TableID]
|
||||
|
||||
) ON [PRIMARY]
|
||||
|
||||
GO
|
||||
|
||||
|
||||
|
||||
ALTER TABLE [TestRunViews] WITH NOCHECK ADD
|
||||
|
||||
CONSTRAINT [PK_TestRunViews] PRIMARY KEY CLUSTERED
|
||||
|
||||
(
|
||||
|
||||
[TestRunID],
|
||||
|
||||
[ViewID]
|
||||
|
||||
) ON [PRIMARY]
|
||||
|
||||
GO
|
||||
|
||||
|
||||
|
||||
ALTER TABLE [TestRuns] WITH NOCHECK ADD
|
||||
|
||||
CONSTRAINT [PK_TestRuns] PRIMARY KEY CLUSTERED
|
||||
|
||||
(
|
||||
|
||||
[TestRunID]
|
||||
|
||||
) ON [PRIMARY]
|
||||
|
||||
GO
|
||||
|
||||
|
||||
|
||||
ALTER TABLE [TestTables] WITH NOCHECK ADD
|
||||
|
||||
CONSTRAINT [PK_TestTables] PRIMARY KEY CLUSTERED
|
||||
|
||||
(
|
||||
|
||||
[TestID],
|
||||
|
||||
[TableID]
|
||||
|
||||
) ON [PRIMARY]
|
||||
|
||||
GO
|
||||
|
||||
|
||||
|
||||
ALTER TABLE [TestViews] WITH NOCHECK ADD
|
||||
|
||||
CONSTRAINT [PK_TestViews] PRIMARY KEY CLUSTERED
|
||||
|
||||
(
|
||||
|
||||
[TestID],
|
||||
|
||||
[ViewID]
|
||||
|
||||
) ON [PRIMARY]
|
||||
|
||||
GO
|
||||
|
||||
|
||||
|
||||
ALTER TABLE [Tests] WITH NOCHECK ADD
|
||||
|
||||
CONSTRAINT [PK_Tests] PRIMARY KEY CLUSTERED
|
||||
|
||||
(
|
||||
|
||||
[TestID]
|
||||
|
||||
) ON [PRIMARY]
|
||||
|
||||
GO
|
||||
|
||||
|
||||
|
||||
ALTER TABLE [Views] WITH NOCHECK ADD
|
||||
|
||||
CONSTRAINT [PK_Views] PRIMARY KEY CLUSTERED
|
||||
|
||||
(
|
||||
|
||||
[ViewID]
|
||||
|
||||
) ON [PRIMARY]
|
||||
|
||||
GO
|
||||
|
||||
|
||||
|
||||
ALTER TABLE [TestRunTables] ADD
|
||||
|
||||
CONSTRAINT [FK_TestRunTables_Tables] FOREIGN KEY
|
||||
|
||||
(
|
||||
|
||||
[TableID]
|
||||
|
||||
) REFERENCES [Tables] (
|
||||
|
||||
[TableID]
|
||||
|
||||
) ON DELETE CASCADE ON UPDATE CASCADE ,
|
||||
|
||||
CONSTRAINT [FK_TestRunTables_TestRuns] FOREIGN KEY
|
||||
|
||||
(
|
||||
|
||||
[TestRunID]
|
||||
|
||||
) REFERENCES [TestRuns] (
|
||||
|
||||
[TestRunID]
|
||||
|
||||
) ON DELETE CASCADE ON UPDATE CASCADE
|
||||
|
||||
GO
|
||||
|
||||
|
||||
|
||||
ALTER TABLE [TestRunViews] ADD
|
||||
|
||||
CONSTRAINT [FK_TestRunViews_TestRuns] FOREIGN KEY
|
||||
|
||||
(
|
||||
|
||||
[TestRunID]
|
||||
|
||||
) REFERENCES [TestRuns] (
|
||||
|
||||
[TestRunID]
|
||||
|
||||
) ON DELETE CASCADE ON UPDATE CASCADE ,
|
||||
|
||||
CONSTRAINT [FK_TestRunViews_Views] FOREIGN KEY
|
||||
|
||||
(
|
||||
|
||||
[ViewID]
|
||||
|
||||
) REFERENCES [Views] (
|
||||
|
||||
[ViewID]
|
||||
|
||||
) ON DELETE CASCADE ON UPDATE CASCADE
|
||||
|
||||
GO
|
||||
|
||||
|
||||
|
||||
ALTER TABLE [TestTables] ADD
|
||||
|
||||
CONSTRAINT [FK_TestTables_Tables] FOREIGN KEY
|
||||
|
||||
(
|
||||
|
||||
[TableID]
|
||||
|
||||
) REFERENCES [Tables] (
|
||||
|
||||
[TableID]
|
||||
|
||||
) ON DELETE CASCADE ON UPDATE CASCADE ,
|
||||
|
||||
CONSTRAINT [FK_TestTables_Tests] FOREIGN KEY
|
||||
|
||||
(
|
||||
|
||||
[TestID]
|
||||
|
||||
) REFERENCES [Tests] (
|
||||
|
||||
[TestID]
|
||||
|
||||
) ON DELETE CASCADE ON UPDATE CASCADE
|
||||
|
||||
GO
|
||||
|
||||
|
||||
|
||||
ALTER TABLE [TestViews] ADD
|
||||
|
||||
CONSTRAINT [FK_TestViews_Tests] FOREIGN KEY
|
||||
|
||||
(
|
||||
|
||||
[TestID]
|
||||
|
||||
) REFERENCES [Tests] (
|
||||
|
||||
[TestID]
|
||||
|
||||
),
|
||||
|
||||
CONSTRAINT [FK_TestViews_Views] FOREIGN KEY
|
||||
|
||||
(
|
||||
|
||||
[ViewID]
|
||||
|
||||
) REFERENCES [Views] (
|
||||
|
||||
[ViewID]
|
||||
|
||||
)
|
||||
|
||||
GO
|
||||
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
@@ -0,0 +1,29 @@
|
||||
USE "Gwent - The Witcher Card Game"
|
||||
|
||||
GO
|
||||
|
||||
CREATE OR ALTER PROCEDURE populateFactions (@rows INT) AS
|
||||
WHILE @rows > 0
|
||||
BEGIN
|
||||
INSERT INTO Factions(name, totalMatches, totalWins, totalLosses, totalCards, totalDraws)
|
||||
VALUES ('test', -1, -1, -1, -1, -1)
|
||||
SET @rows = @rows - 1
|
||||
END
|
||||
|
||||
GO
|
||||
|
||||
CREATE OR ALTER VIEW getNameAndTotalMatches AS
|
||||
SELECT name, totalMatches
|
||||
FROM Factions
|
||||
|
||||
GO
|
||||
|
||||
EXEC addTests 'test1'
|
||||
EXEC addToTables 'Factions'
|
||||
EXEC addToViews 'getNameAndTotalMatches'
|
||||
EXEC addTestTables 'test1', 'Factions', 1000, 1
|
||||
EXEC addTestViews 'test1', 'getNameAndTotalMatches'
|
||||
|
||||
GO
|
||||
|
||||
EXEC runTest 'test1'
|
||||
@@ -0,0 +1,94 @@
|
||||
USE "Gwent - The Witcher Card Game"
|
||||
|
||||
GO
|
||||
|
||||
CREATE OR ALTER PROCEDURE populateFactions (@rows INT) AS
|
||||
WHILE @rows > 0
|
||||
BEGIN
|
||||
INSERT INTO Factions(name, totalMatches, totalWins, totalLosses, totalCards, totalDraws)
|
||||
VALUES ('test', -1, -1, -1, -1, -1)
|
||||
SET @rows = @rows - 1
|
||||
END
|
||||
|
||||
GO
|
||||
|
||||
CREATE OR ALTER PROCEDURE populatePlayers (@rows INT) AS
|
||||
WHILE @rows > 0
|
||||
BEGIN
|
||||
INSERT INTO Players(name, totalMatches, totalWins, totalLosses, totalDraws, reward_points, scraps, ores, meteorite_powder, rank)
|
||||
VALUES ('test', -1, -1, -1, -1, -1, -1, -1, -1, -1)
|
||||
SET @rows = @rows - 1
|
||||
END
|
||||
|
||||
GO
|
||||
|
||||
CREATE OR ALTER PROCEDURE populateCardSet (@rows INT) AS
|
||||
WHILE @rows > 0
|
||||
BEGIN
|
||||
INSERT INTO CardSet(name, image, releaseDate)
|
||||
VALUES ('test', 'test', '2020-01-01')
|
||||
SET @rows = @rows - 1
|
||||
END
|
||||
|
||||
GO
|
||||
|
||||
CREATE OR ALTER PROCEDURE populateCards (@rows INT) AS
|
||||
DECLARE @faction INT
|
||||
SET @faction = (SELECT TOP 1 hmy FROM Factions)
|
||||
DECLARE @cardset INT
|
||||
SET @cardset = (SELECT TOP 1 hmy FROM CardSet)
|
||||
WHILE @rows > 0
|
||||
BEGIN
|
||||
INSERT INTO Cards(name, faction, description, action, image, cost, type, power, color, cardset)
|
||||
VALUES ('test', @faction, 'test', 'test', 'test', -1, 'unit', -1, 'gold', @cardset)
|
||||
SET @rows = @rows - 1
|
||||
END
|
||||
|
||||
GO
|
||||
|
||||
CREATE OR ALTER PROCEDURE populateCardsOwnership (@rows INT) AS
|
||||
DECLARE @card INT
|
||||
DECLARE @player INT
|
||||
WHILE @rows > 0
|
||||
BEGIN
|
||||
SET @card = (SELECT hmy FROM Cards ORDER BY hmy OFFSET @rows ROWS FETCH NEXT 1 ROWS ONLY)
|
||||
SET @player = (SELECT hmy FROM Players ORDER BY hmy OFFSET @rows ROWS FETCH NEXT 1 ROWS ONLY)
|
||||
INSERT INTO CardsOwnership(hCard, hPlayer, nrOfCards, nrOfPremiumCards)
|
||||
VALUES (@card, @player, 1, 1)
|
||||
SET @rows = @rows - 1
|
||||
END
|
||||
|
||||
GO
|
||||
|
||||
CREATE OR ALTER VIEW getNumberOfCardsOfEachTypeOwnByEachPlayer AS
|
||||
SELECT p.name as Player, cs.Name as CardSet, Count(c.hmy) as NumberOfCards
|
||||
FROM CardsOwnership co JOIN Cards c on co.hCard = c.hmy JOIN Players p on co.hPlayer = p.hmy JOIN CardSet cs on c.cardset = cs.hmy
|
||||
GROUP BY p.name, cs.Name
|
||||
|
||||
|
||||
GO
|
||||
EXEC addTests 'test2'
|
||||
|
||||
EXEC addToTables 'Factions'
|
||||
EXEC addToTables 'Players'
|
||||
EXEC addToTables 'Matches'
|
||||
EXEC addToTables 'CardSet'
|
||||
EXEC addToTables 'Cards'
|
||||
EXEC addToTables 'CardsOwnership'
|
||||
|
||||
EXEC addToViews 'getNumberOfCardsOfEachTypeOwnByEachPlayer'
|
||||
|
||||
EXEC addTestTables 'test2', 'Factions', 100, 6
|
||||
EXEC addTestTables 'test2', 'Players', 1000, 5
|
||||
EXEC addTestTables 'test2', 'CardSet', 10, 4
|
||||
EXEC addTestTables 'test2', 'Matches', 10, 3
|
||||
EXEC addTestTables 'test2', 'Cards', 1000, 2
|
||||
EXEC addTestTables 'test2', 'CardsOwnership', 500, 1
|
||||
|
||||
EXEC addTestViews 'test2', 'getNumberOfCardsOfEachTypeOwnByEachPlayer'
|
||||
|
||||
GO
|
||||
|
||||
EXEC runTest 'test2'
|
||||
|
||||
|
||||
@@ -0,0 +1,63 @@
|
||||
USE "Gwent - The Witcher Card Game"
|
||||
|
||||
GO
|
||||
|
||||
CREATE OR ALTER PROCEDURE populateFactions (@rows INT) AS
|
||||
WHILE @rows > 0
|
||||
BEGIN
|
||||
INSERT INTO Factions(name, totalMatches, totalWins, totalLosses, totalCards, totalDraws)
|
||||
VALUES ('test', -1, -1, -1, -1, -1)
|
||||
SET @rows = @rows - 1
|
||||
END
|
||||
|
||||
GO
|
||||
|
||||
CREATE OR ALTER PROCEDURE populatePlayers (@rows INT) AS
|
||||
WHILE @rows > 0
|
||||
BEGIN
|
||||
INSERT INTO Players(name, totalMatches, totalWins, totalLosses, totalDraws, reward_points, scraps, ores, meteorite_powder, rank)
|
||||
VALUES ('test', -1, -1, -1, -1, -1, -1, -1, -1, -1)
|
||||
SET @rows = @rows - 1
|
||||
END
|
||||
|
||||
GO
|
||||
|
||||
CREATE OR ALTER PROCEDURE populateMatches (@rows INT) AS
|
||||
DECLARE @player1 INT
|
||||
SET @player1 = (SELECT TOP 1 hmy FROM Players)
|
||||
DECLARE @player2 INT
|
||||
SET @player2 = (SELECT TOP 1 hmy FROM Players WHERE hmy <> @player1)
|
||||
DECLARE @faction INT
|
||||
SET @faction = (SELECT TOP 1 hmy FROM Factions)
|
||||
WHILE @rows > 0
|
||||
BEGIN
|
||||
INSERT INTO Matches(hPlayer1, hPlayer2, hPlayer1Faction, hPlayer2Faction, result)
|
||||
VALUES (@player1, @player2, @faction, @faction, 1)
|
||||
SET @rows = @rows - 1
|
||||
END
|
||||
|
||||
GO
|
||||
|
||||
CREATE OR ALTER VIEW getMatches AS
|
||||
SELECT p1.name as player1, p2.name as player2, f1.name as player1Faction, f2.name as player2Faction
|
||||
FROM Matches m
|
||||
JOIN Players p1 on m.hPlayer1 = p1.hmy
|
||||
JOIN Players p2 on m.hPlayer2 = p2.hmy
|
||||
JOIN Factions f1 on m.hPlayer1Faction = f1.hmy
|
||||
JOIN Factions f2 on m.hPlayer2Faction = f2.hmy
|
||||
|
||||
GO
|
||||
|
||||
EXEC addTests 'test3'
|
||||
EXEC addToTables 'Factions'
|
||||
EXEC addToTables 'Players'
|
||||
EXEC addToTables 'Matches'
|
||||
EXEC addToViews 'getMatches'
|
||||
EXEC addTestTables 'test3', 'Factions', 1000, 3
|
||||
EXEC addTestTables 'test3', 'Players', 1000, 2
|
||||
EXEC addTestTables 'test3', 'Matches', 1000, 1
|
||||
EXEC addTestViews 'test3', 'getMatches'
|
||||
|
||||
GO
|
||||
|
||||
EXEC runTest 'test3'
|
||||
Reference in New Issue
Block a user