format sql

This commit is contained in:
Aaron Po
2026-08-04 05:33:43 -04:00
parent 1d1edd37d0
commit f3f704da8d
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,12 +1,8 @@
CREATE CREATE OR ALTER PROCEDURE usp_GetAllUserAccounts
OR AS
ALTER PROCEDURE usp_GetAllUserAccounts
AS
BEGIN BEGIN
SET SET NOCOUNT ON;
NOCOUNT ON; SELECT UserAccountID,
SELECT UserAccountID,
Username, Username,
FirstName, FirstName,
LastName, LastName,
@@ -15,5 +11,5 @@ SELECT UserAccountID,
UpdatedAt, UpdatedAt,
DateOfBirth, DateOfBirth,
Timer Timer
FROM dbo.UserAccount; FROM dbo.UserAccount;
END; END;

View File

@@ -1,14 +1,12 @@
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,
@@ -17,6 +15,6 @@ SELECT UserAccountID,
UpdatedAt, UpdatedAt,
DateOfBirth, DateOfBirth,
Timer Timer
FROM dbo.UserAccount FROM dbo.UserAccount
WHERE Email = @Email; WHERE Email = @Email;
END; END;

View File

@@ -1,14 +1,12 @@
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,
@@ -17,6 +15,6 @@ SELECT UserAccountID,
UpdatedAt, UpdatedAt,
DateOfBirth, DateOfBirth,
Timer Timer
FROM dbo.UserAccount FROM dbo.UserAccount
WHERE UserAccountID = @UserAccountId; WHERE UserAccountID = @UserAccountId;
END END

View File

@@ -1,14 +1,12 @@
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,
@@ -17,6 +15,6 @@ SELECT UserAccountID,
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
ALTER PROCEDURE dbo.USP_CreateUserVerification @UserAccountID_ UNIQUEIDENTIFIER,
@VerificationDateTime DATETIME = NULL @VerificationDateTime DATETIME = NULL
AS 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,15 +1,13 @@
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,
@@ -22,9 +20,9 @@ SELECT bp.BreweryPostID,
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
IF EXISTS (SELECT 1
FROM dbo.BreweryPostLocation FROM dbo.BreweryPostLocation
WHERE BreweryPostID = @BreweryPostID) WHERE BreweryPostID = @BreweryPostID)
BEGIN BEGIN
UPDATE dbo.BreweryPostLocation UPDATE dbo.BreweryPostLocation
SET CityID = @CityID, SET CityID = @CityID,
AddressLine1 = @AddressLine1, AddressLine1 = @AddressLine1,
AddressLine2 = @AddressLine2, AddressLine2 = @AddressLine2,
PostalCode = @PostalCode, PostalCode = @PostalCode,
Coordinates = @Coordinates Coordinates = @Coordinates
WHERE BreweryPostID = @BreweryPostID; WHERE BreweryPostID = @BreweryPostID;
END END
ELSE ELSE
BEGIN BEGIN
INSERT INTO dbo.BreweryPostLocation INSERT INTO dbo.BreweryPostLocation
(BreweryPostLocationID, BreweryPostID, CityID, AddressLine1, AddressLine2, PostalCode, Coordinates) (BreweryPostLocationID, BreweryPostID, CityID, AddressLine1, AddressLine2, PostalCode, Coordinates)
VALUES (ISNULL(@BreweryPostLocationID, NEWID()), @BreweryPostID, @CityID, @AddressLine1, @AddressLine2, VALUES (ISNULL(@BreweryPostLocationID, NEWID()), @BreweryPostID, @CityID, @AddressLine1, @AddressLine2,
@PostalCode, @Coordinates); @PostalCode, @Coordinates);
END END
COMMIT TRANSACTION;
COMMIT TRANSACTION;
END END