format sql

This commit is contained in:
Aaron Po
2026-08-04 05:33:43 -04:00
parent c9a02dbedf
commit 9862d1cff4
22 changed files with 373 additions and 425 deletions

View File

@@ -1,18 +1,15 @@
CREATE CREATE OR ALTER FUNCTION dbo.UDF_GetCountryIdByCode(
OR
ALTER FUNCTION dbo.UDF_GetCountryIdByCode
(
@CountryCode NVARCHAR(2) @CountryCode NVARCHAR(2)
) )
RETURNS UNIQUEIDENTIFIER RETURNS UNIQUEIDENTIFIER
AS AS
BEGIN BEGIN
DECLARE DECLARE
@CountryId UNIQUEIDENTIFIER; @CountryId UNIQUEIDENTIFIER;
SELECT @CountryId = CountryID SELECT @CountryId = CountryID
FROM dbo.Country FROM dbo.Country
WHERE ISO3166_1 = @CountryCode; WHERE ISO3166_1 = @CountryCode;
RETURN @CountryId; RETURN @CountryId;
END; END;

View File

@@ -1,16 +1,13 @@
CREATE CREATE OR ALTER FUNCTION dbo.UDF_GetStateProvinceIdByCode(
OR
ALTER FUNCTION dbo.UDF_GetStateProvinceIdByCode
(
@StateProvinceCode NVARCHAR(6) @StateProvinceCode NVARCHAR(6)
) )
RETURNS UNIQUEIDENTIFIER RETURNS UNIQUEIDENTIFIER
AS AS
BEGIN BEGIN
DECLARE DECLARE
@StateProvinceId UNIQUEIDENTIFIER; @StateProvinceId UNIQUEIDENTIFIER;
SELECT @StateProvinceId = StateProvinceID SELECT @StateProvinceId = StateProvinceID
FROM dbo.StateProvince FROM dbo.StateProvince
WHERE ISO3166_2 = @StateProvinceCode; WHERE ISO3166_2 = @StateProvinceCode;
RETURN @StateProvinceId; RETURN @StateProvinceId;
END; END;

View File

@@ -1,34 +1,31 @@
CREATE CREATE OR ALTER PROCEDURE usp_CreateUserAccount(
OR
ALTER PROCEDURE usp_CreateUserAccount
(
@UserAccountId UNIQUEIDENTIFIER OUTPUT, @UserAccountId UNIQUEIDENTIFIER OUTPUT,
@Username VARCHAR (64), @Username VARCHAR(64),
@FirstName NVARCHAR(128), @FirstName NVARCHAR(128),
@LastName NVARCHAR(128), @LastName NVARCHAR(128),
@DateOfBirth DATETIME, @DateOfBirth DATETIME,
@Email VARCHAR (128) @Email VARCHAR(128)
) )
AS AS
BEGIN BEGIN
SET SET
NOCOUNT ON; NOCOUNT ON;
DECLARE DECLARE
@Inserted TABLE (UserAccountID UNIQUEIDENTIFIER); @Inserted TABLE
(
UserAccountID UNIQUEIDENTIFIER
);
INSERT INTO UserAccount INSERT INTO UserAccount
(Username, (Username,
FirstName, FirstName,
LastName, LastName,
DateOfBirth, DateOfBirth,
Email) Email)
OUTPUT INSERTED.UserAccountID INTO @Inserted OUTPUT INSERTED.UserAccountID INTO @Inserted
VALUES VALUES (@Username, @FirstName, @LastName, @DateOfBirth, @Email);
(
@Username, @FirstName, @LastName, @DateOfBirth, @Email
);
SELECT @UserAccountId = UserAccountID SELECT @UserAccountId = UserAccountID
FROM @Inserted; FROM @Inserted;
END; END;

View File

@@ -1,24 +1,20 @@
CREATE CREATE OR ALTER PROCEDURE usp_DeleteUserAccount(
OR
ALTER PROCEDURE usp_DeleteUserAccount
(
@UserAccountId UNIQUEIDENTIFIER @UserAccountId UNIQUEIDENTIFIER
) )
AS AS
BEGIN BEGIN
SET SET NOCOUNT ON
NOCOUNT ON
IF NOT EXISTS (SELECT 1 FROM UserAccount WHERE UserAccountId = @UserAccountId) IF NOT EXISTS (SELECT 1 FROM UserAccount WHERE UserAccountId = @UserAccountId)
BEGIN BEGIN
RAISERROR RAISERROR
('UserAccount with the specified ID does not exist.', 16, ('UserAccount with the specified ID does not exist.', 16,
1); 1);
ROLLBACK TRANSACTION ROLLBACK TRANSACTION
RETURN RETURN
END END
DELETE DELETE
FROM UserAccount FROM UserAccount
WHERE UserAccountId = @UserAccountId; WHERE UserAccountId = @UserAccountId;
END; END;

View File

@@ -1,19 +1,15 @@
CREATE CREATE OR ALTER PROCEDURE usp_GetAllUserAccounts
OR AS
ALTER PROCEDURE usp_GetAllUserAccounts
AS
BEGIN BEGIN
SET SET NOCOUNT ON;
NOCOUNT ON; SELECT UserAccountID,
Username,
SELECT UserAccountID, FirstName,
Username, LastName,
FirstName, Email,
LastName, CreatedAt,
Email, UpdatedAt,
CreatedAt, DateOfBirth,
UpdatedAt, Timer
DateOfBirth, FROM dbo.UserAccount;
Timer
FROM dbo.UserAccount;
END; END;

View File

@@ -1,22 +1,20 @@
CREATE CREATE OR ALTER PROCEDURE usp_GetUserAccountByEmail(
OR @Email VARCHAR(128)
ALTER PROCEDURE usp_GetUserAccountByEmail( )
@Email VARCHAR (128) AS
)
AS
BEGIN BEGIN
SET SET
NOCOUNT ON; NOCOUNT ON;
SELECT UserAccountID, SELECT UserAccountID,
Username, Username,
FirstName, FirstName,
LastName, LastName,
Email, Email,
CreatedAt, CreatedAt,
UpdatedAt, UpdatedAt,
DateOfBirth, DateOfBirth,
Timer Timer
FROM dbo.UserAccount FROM dbo.UserAccount
WHERE Email = @Email; WHERE Email = @Email;
END; END;

View File

@@ -1,22 +1,20 @@
CREATE CREATE OR ALTER PROCEDURE USP_GetUserAccountById(
OR
ALTER PROCEDURE USP_GetUserAccountById(
@UserAccountId UNIQUEIDENTIFIER @UserAccountId UNIQUEIDENTIFIER
) )
AS AS
BEGIN BEGIN
SET SET
NOCOUNT ON; NOCOUNT ON;
SELECT UserAccountID, SELECT UserAccountID,
Username, Username,
FirstName, FirstName,
LastName, LastName,
Email, Email,
CreatedAt, CreatedAt,
UpdatedAt, UpdatedAt,
DateOfBirth, DateOfBirth,
Timer Timer
FROM dbo.UserAccount FROM dbo.UserAccount
WHERE UserAccountID = @UserAccountId; WHERE UserAccountID = @UserAccountId;
END END

View File

@@ -1,22 +1,20 @@
CREATE CREATE OR ALTER PROCEDURE usp_GetUserAccountByUsername(
OR @Username VARCHAR(64)
ALTER PROCEDURE usp_GetUserAccountByUsername( )
@Username VARCHAR (64) AS
)
AS
BEGIN BEGIN
SET SET
NOCOUNT ON; NOCOUNT ON;
SELECT UserAccountID, SELECT UserAccountID,
Username, Username,
FirstName, FirstName,
LastName, LastName,
Email, Email,
CreatedAt, CreatedAt,
UpdatedAt, UpdatedAt,
DateOfBirth, DateOfBirth,
Timer Timer
FROM dbo.UserAccount FROM dbo.UserAccount
WHERE Username = @Username; WHERE Username = @Username;
END; END;

View File

@@ -1,30 +1,28 @@
CREATE CREATE OR ALTER PROCEDURE usp_UpdateUserAccount(
OR @Username VARCHAR(64),
ALTER PROCEDURE usp_UpdateUserAccount(
@Username VARCHAR (64),
@FirstName NVARCHAR(128), @FirstName NVARCHAR(128),
@LastName NVARCHAR(128), @LastName NVARCHAR(128),
@DateOfBirth DATETIME, @DateOfBirth DATETIME,
@Email VARCHAR (128), @Email VARCHAR(128),
@UserAccountId UNIQUEIDENTIFIER @UserAccountId UNIQUEIDENTIFIER
) )
AS AS
BEGIN BEGIN
SET SET
NOCOUNT ON; NOCOUNT ON;
UPDATE UserAccount UPDATE UserAccount
SET Username = @Username, SET Username = @Username,
FirstName = @FirstName, FirstName = @FirstName,
LastName = @LastName, LastName = @LastName,
DateOfBirth = @DateOfBirth, DateOfBirth = @DateOfBirth,
Email = @Email Email = @Email
WHERE UserAccountId = @UserAccountId; WHERE UserAccountId = @UserAccountId;
IF IF
@@ROWCOUNT = 0 @@ROWCOUNT = 0
BEGIN BEGIN
THROW THROW
50001, 'UserAccount with the specified ID does not exist.', 1; 50001, 'UserAccount with the specified ID does not exist.', 1;
END END
END; END;

View File

@@ -1,20 +1,18 @@
CREATE CREATE OR ALTER PROCEDURE dbo.USP_GetActiveUserCredentialByUserAccountId(
OR
ALTER PROCEDURE dbo.USP_GetActiveUserCredentialByUserAccountId(
@UserAccountId UNIQUEIDENTIFIER @UserAccountId UNIQUEIDENTIFIER
) )
AS AS
BEGIN BEGIN
SET SET
NOCOUNT ON; NOCOUNT ON;
SELECT UserCredentialId, SELECT UserCredentialId,
UserAccountId, UserAccountId,
Hash, Hash,
IsRevoked, IsRevoked,
CreatedAt, CreatedAt,
RevokedAt RevokedAt
FROM dbo.UserCredential FROM dbo.UserCredential
WHERE UserAccountId = @UserAccountId WHERE UserAccountId = @UserAccountId
AND IsRevoked = 0; AND IsRevoked = 0;
END; END;

View File

@@ -1,30 +1,28 @@
CREATE CREATE OR ALTER PROCEDURE dbo.USP_InvalidateUserCredential(
OR
ALTER PROCEDURE dbo.USP_InvalidateUserCredential(
@UserAccountId_ UNIQUEIDENTIFIER @UserAccountId_ UNIQUEIDENTIFIER
) )
AS AS
BEGIN BEGIN
SET SET
NOCOUNT ON; NOCOUNT ON;
SET SET
XACT_ABORT ON; XACT_ABORT ON;
BEGIN BEGIN
TRANSACTION; TRANSACTION;
EXEC dbo.USP_GetUserAccountByID @UserAccountId = @UserAccountId_; EXEC dbo.USP_GetUserAccountByID @UserAccountId = @UserAccountId_;
IF IF
@@ROWCOUNT = 0 @@ROWCOUNT = 0
THROW 50001, 'User account not found', 1; THROW 50001, 'User account not found', 1;
-- invalidate all other credentials by setting them to revoked -- invalidate all other credentials by setting them to revoked
UPDATE dbo.UserCredential UPDATE dbo.UserCredential
SET IsRevoked = 1, SET IsRevoked = 1,
RevokedAt = GETDATE() RevokedAt = GETDATE()
WHERE UserAccountId = @UserAccountId_ WHERE UserAccountId = @UserAccountId_
AND IsRevoked != 1; AND IsRevoked != 1;
COMMIT TRANSACTION; COMMIT TRANSACTION;
END; END;

View File

@@ -1,27 +1,25 @@
CREATE CREATE OR ALTER PROCEDURE dbo.USP_RegisterUser(
OR @Username VARCHAR(64),
ALTER PROCEDURE dbo.USP_RegisterUser(
@Username VARCHAR (64),
@FirstName NVARCHAR(128), @FirstName NVARCHAR(128),
@LastName NVARCHAR(128), @LastName NVARCHAR(128),
@DateOfBirth DATETIME, @DateOfBirth DATETIME,
@Email VARCHAR (128), @Email VARCHAR(128),
@Hash NVARCHAR(MAX) @Hash NVARCHAR(MAX)
) )
AS AS
BEGIN BEGIN
SET SET
NOCOUNT ON; NOCOUNT ON;
SET SET
XACT_ABORT ON; XACT_ABORT ON;
DECLARE DECLARE
@UserAccountId_ UNIQUEIDENTIFIER; @UserAccountId_ UNIQUEIDENTIFIER;
BEGIN BEGIN
TRANSACTION; TRANSACTION;
EXEC usp_CreateUserAccount EXEC usp_CreateUserAccount
@UserAccountId = @UserAccountId_ OUTPUT, @UserAccountId = @UserAccountId_ OUTPUT,
@Username = @Username, @Username = @Username,
@FirstName = @FirstName, @FirstName = @FirstName,
@@ -30,23 +28,23 @@ EXEC usp_CreateUserAccount
@Email = @Email; @Email = @Email;
IF IF
@UserAccountId_ IS NULL @UserAccountId_ IS NULL
BEGIN BEGIN
THROW THROW
50000, 'Failed to create user account.', 1; 50000, 'Failed to create user account.', 1;
END END
INSERT INTO dbo.UserCredential INSERT INTO dbo.UserCredential
(UserAccountId, Hash) (UserAccountId, Hash)
VALUES (@UserAccountId_, @Hash); VALUES (@UserAccountId_, @Hash);
IF IF
@@ROWCOUNT = 0 @@ROWCOUNT = 0
BEGIN BEGIN
THROW THROW
50002, 'Failed to create user credential.', 1; 50002, 'Failed to create user credential.', 1;
END END
COMMIT TRANSACTION; COMMIT TRANSACTION;
SELECT @UserAccountId_ AS UserAccountId; SELECT @UserAccountId_ AS UserAccountId;
END END

View File

@@ -1,33 +1,31 @@
CREATE CREATE OR ALTER PROCEDURE dbo.USP_RotateUserCredential(
OR
ALTER PROCEDURE dbo.USP_RotateUserCredential(
@UserAccountId_ UNIQUEIDENTIFIER, @UserAccountId_ UNIQUEIDENTIFIER,
@Hash NVARCHAR(MAX) @Hash NVARCHAR(MAX)
) )
AS AS
BEGIN BEGIN
SET SET
NOCOUNT ON; NOCOUNT ON;
SET SET
XACT_ABORT ON; XACT_ABORT ON;
BEGIN BEGIN
TRANSACTION; TRANSACTION;
EXEC USP_GetUserAccountByID @UserAccountId = @UserAccountId_ EXEC USP_GetUserAccountByID @UserAccountId = @UserAccountId_
IF @@ROWCOUNT = 0 IF @@ROWCOUNT = 0
THROW 50001, 'User account not found', 1; THROW 50001, 'User account not found', 1;
-- invalidate all other credentials -- set them to revoked -- invalidate all other credentials -- set them to revoked
UPDATE dbo.UserCredential UPDATE dbo.UserCredential
SET IsRevoked = 1, SET IsRevoked = 1,
RevokedAt = GETDATE() RevokedAt = GETDATE()
WHERE UserAccountId = @UserAccountId_; WHERE UserAccountId = @UserAccountId_;
INSERT INTO dbo.UserCredential INSERT INTO dbo.UserCredential
(UserAccountId, Hash) (UserAccountId, Hash)
VALUES (@UserAccountId_, @Hash); VALUES (@UserAccountId_, @Hash);
END; END;

View File

@@ -1,29 +1,27 @@
CREATE CREATE OR ALTER PROCEDURE dbo.USP_CreateUserVerification @UserAccountID_ UNIQUEIDENTIFIER,
OR @VerificationDateTime DATETIME = NULL
ALTER PROCEDURE dbo.USP_CreateUserVerification @UserAccountID_ UNIQUEIDENTIFIER, AS
@VerificationDateTime DATETIME = NULL
AS
BEGIN BEGIN
SET SET
NOCOUNT ON; NOCOUNT ON;
SET SET
XACT_ABORT ON; XACT_ABORT ON;
IF IF
@VerificationDateTime IS NULL @VerificationDateTime IS NULL
SET @VerificationDateTime = GETDATE(); SET @VerificationDateTime = GETDATE();
BEGIN BEGIN
TRANSACTION; TRANSACTION;
EXEC USP_GetUserAccountByID @UserAccountId = @UserAccountID_; EXEC USP_GetUserAccountByID @UserAccountId = @UserAccountID_;
IF IF
@@ROWCOUNT = 0 @@ROWCOUNT = 0
THROW 50001, 'Could not find a user with that id', 1; THROW 50001, 'Could not find a user with that id', 1;
INSERT INTO dbo.UserVerification INSERT INTO dbo.UserVerification
(UserAccountId, VerificationDateTime) (UserAccountId, VerificationDateTime)
VALUES (@UserAccountID_, @VerificationDateTime); VALUES (@UserAccountID_, @VerificationDateTime);
COMMIT TRANSACTION; COMMIT TRANSACTION;
END END

View File

@@ -1,40 +1,38 @@
CREATE CREATE OR ALTER PROCEDURE dbo.USP_CreateCity(
OR
ALTER PROCEDURE dbo.USP_CreateCity(
@CityName NVARCHAR(100), @CityName NVARCHAR(100),
@StateProvinceCode NVARCHAR(6) @StateProvinceCode NVARCHAR(6)
) )
AS AS
BEGIN BEGIN
SET SET
NOCOUNT ON; NOCOUNT ON;
SET SET
XACT_ABORT ON; XACT_ABORT ON;
BEGIN BEGIN
TRANSACTION TRANSACTION
DECLARE DECLARE
@StateProvinceId UNIQUEIDENTIFIER = dbo.UDF_GetStateProvinceIdByCode(@StateProvinceCode); @StateProvinceId UNIQUEIDENTIFIER = dbo.UDF_GetStateProvinceIdByCode(@StateProvinceCode);
IF IF
@StateProvinceId IS NULL @StateProvinceId IS NULL
BEGIN BEGIN
THROW THROW
50001, 'State/province does not exist', 1; 50001, 'State/province does not exist', 1;
END END
IF IF
EXISTS (SELECT 1 EXISTS (SELECT 1
FROM dbo.City FROM dbo.City
WHERE CityName = @CityName WHERE CityName = @CityName
AND StateProvinceID = @StateProvinceId) AND StateProvinceID = @StateProvinceId)
BEGIN BEGIN
THROW THROW
50002, 'City already exists.', 1; 50002, 'City already exists.', 1;
END END
INSERT INTO dbo.City INSERT INTO dbo.City
(StateProvinceID, CityName) (StateProvinceID, CityName)
VALUES (@StateProvinceId, @CityName); VALUES (@StateProvinceId, @CityName);
COMMIT TRANSACTION COMMIT TRANSACTION
END; END;

View File

@@ -1,26 +1,24 @@
CREATE CREATE OR ALTER PROCEDURE dbo.USP_CreateCountry(
OR
ALTER PROCEDURE dbo.USP_CreateCountry(
@CountryName NVARCHAR(100), @CountryName NVARCHAR(100),
@ISO3166_1 NVARCHAR(2) @ISO3166_1 NVARCHAR(2)
) )
AS AS
BEGIN BEGIN
SET SET
NOCOUNT ON; NOCOUNT ON;
SET SET
XACT_ABORT ON; XACT_ABORT ON;
BEGIN BEGIN
TRANSACTION; TRANSACTION;
IF IF
EXISTS (SELECT 1 EXISTS (SELECT 1
FROM dbo.Country FROM dbo.Country
WHERE ISO3166_1 = @ISO3166_1) WHERE ISO3166_1 = @ISO3166_1)
THROW 50001, 'Country already exists', 1; THROW 50001, 'Country already exists', 1;
INSERT INTO dbo.Country INSERT INTO dbo.Country
(CountryName, ISO3166_1) (CountryName, ISO3166_1)
VALUES (@CountryName, @ISO3166_1); VALUES (@CountryName, @ISO3166_1);
COMMIT TRANSACTION; COMMIT TRANSACTION;
END; END;

View File

@@ -1,34 +1,32 @@
CREATE CREATE OR ALTER PROCEDURE dbo.USP_CreateStateProvince(
OR
ALTER PROCEDURE dbo.USP_CreateStateProvince(
@StateProvinceName NVARCHAR(100), @StateProvinceName NVARCHAR(100),
@ISO3166_2 NVARCHAR(6), @ISO3166_2 NVARCHAR(6),
@CountryCode NVARCHAR(2) @CountryCode NVARCHAR(2)
) )
AS AS
BEGIN BEGIN
SET SET
NOCOUNT ON; NOCOUNT ON;
SET SET
XACT_ABORT ON; XACT_ABORT ON;
IF IF
EXISTS (SELECT 1 EXISTS (SELECT 1
FROM dbo.StateProvince FROM dbo.StateProvince
WHERE ISO3166_2 = @ISO3166_2) WHERE ISO3166_2 = @ISO3166_2)
RETURN; RETURN;
DECLARE DECLARE
@CountryId UNIQUEIDENTIFIER = dbo.UDF_GetCountryIdByCode(@CountryCode); @CountryId UNIQUEIDENTIFIER = dbo.UDF_GetCountryIdByCode(@CountryCode);
IF IF
@CountryId IS NULL @CountryId IS NULL
BEGIN BEGIN
THROW THROW
50001, 'Country does not exist', 1; 50001, 'Country does not exist', 1;
END END
INSERT INTO dbo.StateProvince INSERT INTO dbo.StateProvince
(StateProvinceName, ISO3166_2, CountryID) (StateProvinceName, ISO3166_2, CountryID)
VALUES (@StateProvinceName, @ISO3166_2, @CountryId); VALUES (@StateProvinceName, @ISO3166_2, @CountryId);
END; END;

View File

@@ -1,6 +1,4 @@
CREATE CREATE OR ALTER PROCEDURE dbo.USP_CreateBrewery(
OR
ALTER PROCEDURE dbo.USP_CreateBrewery(
@BreweryName NVARCHAR(256), @BreweryName NVARCHAR(256),
@Description NVARCHAR(512), @Description NVARCHAR(512),
@PostedByID UNIQUEIDENTIFIER, @PostedByID UNIQUEIDENTIFIER,
@@ -9,53 +7,53 @@ ALTER PROCEDURE dbo.USP_CreateBrewery(
@AddressLine2 NVARCHAR(256) = NULL, @AddressLine2 NVARCHAR(256) = NULL,
@PostalCode NVARCHAR(20), @PostalCode NVARCHAR(20),
@Coordinates GEOGRAPHY = NULL @Coordinates GEOGRAPHY = NULL
) )
AS AS
BEGIN BEGIN
SET SET
NOCOUNT ON; NOCOUNT ON;
SET SET
XACT_ABORT ON; XACT_ABORT ON;
IF IF
@BreweryName IS NULL @BreweryName IS NULL
THROW 50001, 'Brewery name cannot be null.', 1; THROW 50001, 'Brewery name cannot be null.', 1;
IF IF
@Description IS NULL @Description IS NULL
THROW 50002, 'Brewery description cannot be null.', 1; THROW 50002, 'Brewery description cannot be null.', 1;
IF IF
NOT EXISTS (SELECT 1 NOT EXISTS (SELECT 1
FROM dbo.UserAccount FROM dbo.UserAccount
WHERE UserAccountID = @PostedByID) WHERE UserAccountID = @PostedByID)
THROW 50404, 'User not found.', 1; THROW 50404, 'User not found.', 1;
IF IF
NOT EXISTS (SELECT 1 NOT EXISTS (SELECT 1
FROM dbo.City FROM dbo.City
WHERE CityID = @CityID) WHERE CityID = @CityID)
THROW 50404, 'City not found.', 1; THROW 50404, 'City not found.', 1;
DECLARE DECLARE
@NewBreweryID UNIQUEIDENTIFIER = NEWID(); @NewBreweryID UNIQUEIDENTIFIER = NEWID();
DECLARE DECLARE
@NewBrewerLocationID UNIQUEIDENTIFIER = NEWID(); @NewBrewerLocationID UNIQUEIDENTIFIER = NEWID();
BEGIN BEGIN
TRANSACTION; TRANSACTION;
INSERT INTO dbo.BreweryPost INSERT INTO dbo.BreweryPost
(BreweryPostID, BreweryName, Description, PostedByID) (BreweryPostID, BreweryName, Description, PostedByID)
VALUES (@NewBreweryID, @BreweryName, @Description, @PostedByID); VALUES (@NewBreweryID, @BreweryName, @Description, @PostedByID);
INSERT INTO dbo.BreweryPostLocation INSERT INTO dbo.BreweryPostLocation
(BreweryPostLocationID, BreweryPostID, CityID, AddressLine1, AddressLine2, PostalCode, Coordinates) (BreweryPostLocationID, BreweryPostID, CityID, AddressLine1, AddressLine2, PostalCode, Coordinates)
VALUES (@NewBrewerLocationID, @NewBreweryID, @CityID, @AddressLine1, @AddressLine2, @PostalCode, @Coordinates); VALUES (@NewBrewerLocationID, @NewBreweryID, @CityID, @AddressLine1, @AddressLine2, @PostalCode, @Coordinates);
COMMIT TRANSACTION; COMMIT TRANSACTION;
SELECT @NewBreweryID AS BreweryPostID, SELECT @NewBreweryID AS BreweryPostID,
@NewBrewerLocationID AS BreweryPostLocationID; @NewBrewerLocationID AS BreweryPostLocationID;
END END

View File

@@ -1,20 +1,17 @@
CREATE CREATE OR ALTER PROCEDURE dbo.USP_DeleteBrewery @BreweryPostID UNIQUEIDENTIFIER
OR AS
ALTER PROCEDURE dbo.USP_DeleteBrewery
@BreweryPostID UNIQUEIDENTIFIER
AS
BEGIN BEGIN
SET SET
NOCOUNT ON; NOCOUNT ON;
IF IF
NOT EXISTS (SELECT 1 NOT EXISTS (SELECT 1
FROM dbo.BreweryPost FROM dbo.BreweryPost
WHERE BreweryPostID = @BreweryPostID) WHERE BreweryPostID = @BreweryPostID)
THROW 50404, 'Brewery not found.', 1; THROW 50404, 'Brewery not found.', 1;
-- BreweryPostLocation and BreweryPostPhoto cascade-delete with their parent BreweryPost. -- BreweryPostLocation and BreweryPostPhoto cascade-delete with their parent BreweryPost.
DELETE DELETE
FROM dbo.BreweryPost FROM dbo.BreweryPost
WHERE BreweryPostID = @BreweryPostID; WHERE BreweryPostID = @BreweryPostID;
END END

View File

@@ -1,30 +1,28 @@
CREATE CREATE OR ALTER PROCEDURE dbo.USP_GetAllBreweries(
OR
ALTER PROCEDURE dbo.USP_GetAllBreweries(
@Limit INT = NULL, @Limit INT = NULL,
@Offset INT = NULL @Offset INT = NULL
) )
AS AS
BEGIN BEGIN
SET SET
NOCOUNT ON; NOCOUNT ON;
SELECT bp.BreweryPostID, SELECT bp.BreweryPostID,
bp.PostedByID, bp.PostedByID,
bp.BreweryName, bp.BreweryName,
bp.Description, bp.Description,
bp.CreatedAt, bp.CreatedAt,
bp.UpdatedAt, bp.UpdatedAt,
bp.Timer, bp.Timer,
bpl.BreweryPostLocationID, bpl.BreweryPostLocationID,
bpl.CityID, bpl.CityID,
bpl.AddressLine1, bpl.AddressLine1,
bpl.AddressLine2, bpl.AddressLine2,
bpl.PostalCode, bpl.PostalCode,
bpl.Coordinates bpl.Coordinates
FROM dbo.BreweryPost bp FROM dbo.BreweryPost bp
LEFT JOIN dbo.BreweryPostLocation bpl LEFT JOIN dbo.BreweryPostLocation bpl
ON bp.BreweryPostID = bpl.BreweryPostID ON bp.BreweryPostID = bpl.BreweryPostID
ORDER BY bp.CreatedAt DESC ORDER BY bp.CreatedAt DESC
OFFSET ISNULL(@Offset, 0) ROWS FETCH NEXT ISNULL(@Limit, 2147483647) ROWS ONLY; OFFSET ISNULL(@Offset, 0) ROWS FETCH NEXT ISNULL(@Limit, 2147483647) ROWS ONLY;
END END

View File

@@ -1,11 +1,9 @@
CREATE CREATE OR ALTER PROCEDURE dbo.USP_GetBreweryById @BreweryPostID UNIQUEIDENTIFIER
OR AS
ALTER PROCEDURE dbo.USP_GetBreweryById @BreweryPostID UNIQUEIDENTIFIER
AS
BEGIN BEGIN
SELECT * SELECT *
FROM BreweryPost bp FROM BreweryPost bp
INNER JOIN BreweryPostLocation bpl INNER JOIN BreweryPostLocation bpl
ON bp.BreweryPostID = bpl.BreweryPostID ON bp.BreweryPostID = bpl.BreweryPostID
WHERE bp.BreweryPostID = @BreweryPostID; WHERE bp.BreweryPostID = @BreweryPostID;
END END

View File

@@ -1,6 +1,4 @@
CREATE CREATE OR ALTER PROCEDURE dbo.USP_UpdateBrewery(
OR
ALTER PROCEDURE dbo.USP_UpdateBrewery(
@BreweryPostID UNIQUEIDENTIFIER, @BreweryPostID UNIQUEIDENTIFIER,
@BreweryName NVARCHAR(256), @BreweryName NVARCHAR(256),
@Description NVARCHAR(512), @Description NVARCHAR(512),
@@ -10,70 +8,70 @@ ALTER PROCEDURE dbo.USP_UpdateBrewery(
@AddressLine2 NVARCHAR(256) = NULL, @AddressLine2 NVARCHAR(256) = NULL,
@PostalCode NVARCHAR(20) = NULL, @PostalCode NVARCHAR(20) = NULL,
@Coordinates GEOGRAPHY = NULL @Coordinates GEOGRAPHY = NULL
) )
AS AS
BEGIN BEGIN
SET SET
NOCOUNT ON; NOCOUNT ON;
SET SET
XACT_ABORT ON; XACT_ABORT ON;
IF IF
@BreweryName IS NULL @BreweryName IS NULL
THROW 50001, 'Brewery name cannot be null.', 1; THROW 50001, 'Brewery name cannot be null.', 1;
IF IF
@Description IS NULL @Description IS NULL
THROW 50002, 'Brewery description cannot be null.', 1; THROW 50002, 'Brewery description cannot be null.', 1;
IF IF
NOT EXISTS (SELECT 1 NOT EXISTS (SELECT 1
FROM dbo.BreweryPost FROM dbo.BreweryPost
WHERE BreweryPostID = @BreweryPostID) WHERE BreweryPostID = @BreweryPostID)
THROW 50404, 'Brewery not found.', 1; THROW 50404, 'Brewery not found.', 1;
IF IF
@CityID IS NOT NULL AND NOT EXISTS (SELECT 1 @CityID IS NOT NULL AND NOT EXISTS (SELECT 1
FROM dbo.City FROM dbo.City
WHERE CityID = @CityID) WHERE CityID = @CityID)
THROW 50404, 'City not found.', 1; THROW 50404, 'City not found.', 1;
BEGIN BEGIN
TRANSACTION; TRANSACTION;
UPDATE dbo.BreweryPost UPDATE dbo.BreweryPost
SET BreweryName = @BreweryName, SET BreweryName = @BreweryName,
Description = @Description, Description = @Description,
UpdatedAt = GETDATE() UpdatedAt = GETDATE()
WHERE BreweryPostID = @BreweryPostID; WHERE BreweryPostID = @BreweryPostID;
IF IF
@CityID IS NULL @CityID IS NULL
BEGIN BEGIN
-- No location supplied: clear any existing location for this brewery. -- No location supplied: clear any existing location for this brewery.
DELETE DELETE
FROM dbo.BreweryPostLocation FROM dbo.BreweryPostLocation
WHERE BreweryPostID = @BreweryPostID; WHERE BreweryPostID = @BreweryPostID;
END END
ELSE IF EXISTS (SELECT 1 ELSE
FROM dbo.BreweryPostLocation IF EXISTS (SELECT 1
WHERE BreweryPostID = @BreweryPostID) FROM dbo.BreweryPostLocation
BEGIN WHERE BreweryPostID = @BreweryPostID)
UPDATE dbo.BreweryPostLocation BEGIN
SET CityID = @CityID, UPDATE dbo.BreweryPostLocation
AddressLine1 = @AddressLine1, SET CityID = @CityID,
AddressLine2 = @AddressLine2, AddressLine1 = @AddressLine1,
PostalCode = @PostalCode, AddressLine2 = @AddressLine2,
Coordinates = @Coordinates PostalCode = @PostalCode,
WHERE BreweryPostID = @BreweryPostID; Coordinates = @Coordinates
END WHERE BreweryPostID = @BreweryPostID;
ELSE END
BEGIN ELSE
INSERT INTO dbo.BreweryPostLocation BEGIN
(BreweryPostLocationID, BreweryPostID, CityID, AddressLine1, AddressLine2, PostalCode, Coordinates) INSERT INTO dbo.BreweryPostLocation
VALUES (ISNULL(@BreweryPostLocationID, NEWID()), @BreweryPostID, @CityID, @AddressLine1, @AddressLine2, (BreweryPostLocationID, BreweryPostID, CityID, AddressLine1, AddressLine2, PostalCode, Coordinates)
@PostalCode, @Coordinates); VALUES (ISNULL(@BreweryPostLocationID, NEWID()), @BreweryPostID, @CityID, @AddressLine1, @AddressLine2,
END @PostalCode, @Coordinates);
END
COMMIT TRANSACTION; COMMIT TRANSACTION;
END END