A heckin ton. Mostly hackish
This commit is contained in:
parent
052052d76b
commit
b229ff9a15
70 changed files with 2226 additions and 881 deletions
Binary file not shown.
|
@ -36,6 +36,7 @@ CREATE TABLE [User] (
|
|||
Hue INT NOT NULL
|
||||
CONSTRAINT HueDefault DEFAULT 0
|
||||
CONSTRAINT HueConstraint CHECK (0 <= Hue AND Hue <= 360),
|
||||
PFP VARCHAR(11) NULL,
|
||||
Verified BIT NOT NULL
|
||||
CONSTRAINT VerifiedDefault DEFAULT 0
|
||||
PRIMARY KEY(ID)
|
||||
|
@ -102,7 +103,8 @@ CREATE TABLE [Progress] (
|
|||
|
||||
CREATE TABLE [IsOn] (
|
||||
UserID INT NOT NULL,
|
||||
PlatformID INT NOT NULL
|
||||
PlatformID INT NOT NULL,
|
||||
PlatformUserID VARCHAR(32) NOT NULL
|
||||
PRIMARY KEY(UserID, PlatformID)
|
||||
FOREIGN KEY(UserID) REFERENCES [User](ID)
|
||||
ON UPDATE CASCADE
|
||||
|
|
|
@ -1,6 +0,0 @@
|
|||
CREATE PROCEDURE GetUserLogin(
|
||||
@email VARCHAR(254)
|
||||
) AS
|
||||
BEGIN TRANSACTION
|
||||
SELECT Id, Salt, [Password], Hue FROM [User] WHERE Email = @email
|
||||
COMMIT TRANSACTION
|
186
sql/UserData.sql
Normal file
186
sql/UserData.sql
Normal file
|
@ -0,0 +1,186 @@
|
|||
---------------------------------------
|
||||
-- GET USER NAME AND STATS PROCEDURE --
|
||||
---------------------------------------
|
||||
|
||||
CREATE PROCEDURE GetUserNameAndStats(
|
||||
@userId INT,
|
||||
@username VARCHAR(32) OUTPUT,
|
||||
@completed INT OUTPUT,
|
||||
@average INT OUTPUT,
|
||||
@perfect INT OUTPUT
|
||||
)
|
||||
AS
|
||||
BEGIN TRANSACTION
|
||||
|
||||
SELECT @username = Username
|
||||
FROM [User]
|
||||
WHERE ID = @userId
|
||||
|
||||
IF @username IS NULL
|
||||
BEGIN
|
||||
PRINT 'No user found with specified id'
|
||||
ROLLBACK TRANSACTION
|
||||
RETURN 1
|
||||
END
|
||||
|
||||
DECLARE @progress TABLE (GameID INT, Completed INT, Total INT)
|
||||
INSERT INTO @progress
|
||||
SELECT GameID, SUM(CASE WHEN Progress.Progress = Achievement.Stages THEN 1 ELSE 0 END) AS Completed, COUNT(AchievementID) AS Total
|
||||
FROM Achievement
|
||||
JOIN Progress ON
|
||||
Progress.UserID = @userId
|
||||
AND Progress.AchievementID = Achievement.ID
|
||||
GROUP BY GameID
|
||||
COMMIT TRANSACTION
|
||||
|
||||
SELECT @completed = SUM(Completed)
|
||||
FROM @progress
|
||||
|
||||
SELECT @average = AVG((Completed * 100) / Total)
|
||||
FROM @progress
|
||||
|
||||
SELECT @perfect = COUNT(GameID)
|
||||
FROM @progress
|
||||
WHERE Completed = Total
|
||||
|
||||
RETURN 0
|
||||
GO
|
||||
|
||||
----------------------------------
|
||||
-- GET USER PLATFORMS PROCEDURE --
|
||||
----------------------------------
|
||||
|
||||
CREATE PROCEDURE GetUserPlatforms(
|
||||
@userId INT
|
||||
)
|
||||
AS
|
||||
SELECT [Platform].ID, [PlatformName], (CASE WHEN UserID IS NOT NULL THEN 1 ELSE 0 END) AS Connected
|
||||
FROM [Platform]
|
||||
LEFT JOIN IsOn ON IsOn.PlatformID = [Platform].ID
|
||||
ORDER BY [Platform].ID
|
||||
GO
|
||||
|
||||
--------------------------------
|
||||
-- GET USER RATINGS PROCEDURE --
|
||||
--------------------------------
|
||||
|
||||
CREATE PROCEDURE GetUserRatings(
|
||||
@userId INT
|
||||
)
|
||||
AS
|
||||
SELECT Game.Name AS GameName, Achievement.Name AS AchievementName, Quality, Difficulty, Rating.[Description]
|
||||
FROM Rating
|
||||
JOIN Achievement ON Achievement.ID = Rating.AchievementID
|
||||
JOIN Game ON Game.ID = Achievement.GameID
|
||||
WHERE UserID = @userId
|
||||
GO
|
||||
|
||||
------------------------------
|
||||
-- GET USER IMAGE PROCEDURE --
|
||||
------------------------------
|
||||
|
||||
CREATE PROCEDURE GetUserImage(
|
||||
@userId INT
|
||||
)
|
||||
AS
|
||||
IF NOT EXISTS (SELECT * FROM [User] WHERE ID = @userId)
|
||||
BEGIN
|
||||
PRINT 'No user with specified ID found'
|
||||
RETURN 1
|
||||
END
|
||||
SELECT PFP FROM [User] WHERE ID = @userId
|
||||
RETURN 0
|
||||
GO
|
||||
|
||||
------------------
|
||||
-- SET USERNAME --
|
||||
------------------
|
||||
|
||||
CREATE PROCEDURE SetUsername(
|
||||
@userId INT,
|
||||
@username VARCHAR(32)
|
||||
)
|
||||
AS
|
||||
IF NOT EXISTS (SELECT * FROM [User] WHERE ID = @userId)
|
||||
BEGIN
|
||||
PRINT 'No user with specified ID found'
|
||||
RETURN 1
|
||||
END
|
||||
UPDATE [User] SET Username = @username WHERE ID = @userId
|
||||
RETURN 0
|
||||
GO
|
||||
|
||||
------------------------------
|
||||
-- SET USER IMAGE PROCEDURE --
|
||||
------------------------------
|
||||
|
||||
CREATE PROCEDURE SetUserImage(
|
||||
@userId INT,
|
||||
@type VARCHAR(11)
|
||||
)
|
||||
AS
|
||||
IF NOT EXISTS (SELECT * FROM [User] WHERE ID = @userId)
|
||||
BEGIN
|
||||
PRINT 'No user with specified ID found'
|
||||
RETURN 1
|
||||
END
|
||||
UPDATE [User] SET PFP = @type WHERE ID = @userId
|
||||
RETURN 0
|
||||
GO
|
||||
|
||||
---------------------------
|
||||
-- ADD USER TO PROCEDURE --
|
||||
---------------------------
|
||||
|
||||
CREATE PROCEDURE AddPlatform(
|
||||
@userId INT,
|
||||
@platformId INT,
|
||||
@platformUserID VARCHAR(32)
|
||||
)
|
||||
AS
|
||||
IF NOT EXISTS (SELECT * FROM [User] WHERE ID = @userId)
|
||||
BEGIN
|
||||
PRINT 'No user with specified ID found'
|
||||
RETURN 1
|
||||
END
|
||||
IF NOT EXISTS (SELECT * FROM [Platform] WHERE ID = @platformId)
|
||||
BEGIN
|
||||
PRINT 'No platform with specified ID found'
|
||||
RETURN 2
|
||||
END
|
||||
IF EXISTS (SELECT * FROM IsOn WHERE UserID = @userId AND PlatformID = @platformId)
|
||||
BEGIN
|
||||
PRINT 'User already exists on platform'
|
||||
RETURN 3
|
||||
END
|
||||
INSERT INTO IsOn VALUES (@userId, @platformId, @platformUserId)
|
||||
RETURN 0
|
||||
GO
|
||||
|
||||
--------------------------------
|
||||
-- REMOVE USER FROM PROCEDURE --
|
||||
--------------------------------
|
||||
|
||||
CREATE PROCEDURE RemovePlatform(
|
||||
@userId INT,
|
||||
@platformId INT
|
||||
)
|
||||
AS
|
||||
IF NOT EXISTS (SELECT * FROM [User] WHERE ID = @userId)
|
||||
BEGIN
|
||||
PRINT 'No user with specified ID found'
|
||||
RETURN 1
|
||||
END
|
||||
IF NOT EXISTS (SELECT * FROM [Platform] WHERE ID = @platformId)
|
||||
BEGIN
|
||||
PRINT 'No platform with specified ID found'
|
||||
RETURN 2
|
||||
END
|
||||
IF NOT EXISTS (SELECT * FROM IsOn WHERE UserID = @userId AND PlatformID = @platformId)
|
||||
BEGIN
|
||||
PRINT 'User does not exist on platform'
|
||||
RETURN 3
|
||||
END
|
||||
DELETE FROM IsOn WHERE UserID = @userId AND PlatformID = @platformId
|
||||
RETURN 0
|
||||
GO
|
Loading…
Add table
Add a link
Reference in a new issue