354 lines
11 KiB
Transact-SQL
354 lines
11 KiB
Transact-SQL
SET ANSI_NULLS ON;
|
|
GO
|
|
SET QUOTED_IDENTIFIER ON;
|
|
GO
|
|
|
|
INSERT dbo.CharacterAliases (CharacterID, Alias, SortOrder)
|
|
SELECT c.CharacterID,
|
|
LTRIM(RTRIM(c.CharacterName)),
|
|
ISNULL((SELECT MAX(ca.SortOrder) FROM dbo.CharacterAliases ca WHERE ca.CharacterID = c.CharacterID), 0) + 10
|
|
FROM dbo.Characters c
|
|
WHERE NULLIF(LTRIM(RTRIM(c.CharacterName)), N'') IS NOT NULL
|
|
AND NOT EXISTS
|
|
(
|
|
SELECT 1
|
|
FROM dbo.CharacterAliases ca
|
|
WHERE ca.CharacterID = c.CharacterID
|
|
AND UPPER(LTRIM(RTRIM(ca.Alias))) = UPPER(LTRIM(RTRIM(c.CharacterName)))
|
|
);
|
|
GO
|
|
|
|
INSERT dbo.LocationAliases (LocationID, Alias, SortOrder)
|
|
SELECT l.LocationID,
|
|
LTRIM(RTRIM(l.LocationName)),
|
|
ISNULL((SELECT MAX(la.SortOrder) FROM dbo.LocationAliases la WHERE la.LocationID = l.LocationID), 0) + 10
|
|
FROM dbo.Locations l
|
|
WHERE NULLIF(LTRIM(RTRIM(l.LocationName)), N'') IS NOT NULL
|
|
AND NOT EXISTS
|
|
(
|
|
SELECT 1
|
|
FROM dbo.LocationAliases la
|
|
WHERE la.LocationID = l.LocationID
|
|
AND UPPER(LTRIM(RTRIM(la.Alias))) = UPPER(LTRIM(RTRIM(l.LocationName)))
|
|
);
|
|
GO
|
|
|
|
CREATE OR ALTER PROCEDURE dbo.CharacterAlias_Add
|
|
@CharacterID int,
|
|
@Alias nvarchar(200),
|
|
@SortOrder int = NULL
|
|
AS
|
|
BEGIN
|
|
SET NOCOUNT ON;
|
|
|
|
SET @Alias = LTRIM(RTRIM(@Alias));
|
|
IF NULLIF(@Alias, N'') IS NULL
|
|
THROW 51000, 'Enter an alias before saving.', 1;
|
|
|
|
DECLARE @ExistingCharacterAliasID int;
|
|
SELECT TOP (1) @ExistingCharacterAliasID = CharacterAliasID
|
|
FROM dbo.CharacterAliases
|
|
WHERE CharacterID = @CharacterID
|
|
AND UPPER(LTRIM(RTRIM(Alias))) = UPPER(@Alias)
|
|
ORDER BY CharacterAliasID;
|
|
|
|
IF @ExistingCharacterAliasID IS NOT NULL
|
|
BEGIN
|
|
IF @SortOrder IS NOT NULL
|
|
UPDATE dbo.CharacterAliases SET SortOrder = @SortOrder WHERE CharacterAliasID = @ExistingCharacterAliasID;
|
|
SELECT @ExistingCharacterAliasID AS CharacterAliasID;
|
|
RETURN;
|
|
END
|
|
|
|
IF @SortOrder IS NULL
|
|
SELECT @SortOrder = ISNULL(MAX(SortOrder), 0) + 10 FROM dbo.CharacterAliases WHERE CharacterID = @CharacterID;
|
|
|
|
INSERT dbo.CharacterAliases (CharacterID, Alias, SortOrder)
|
|
VALUES (@CharacterID, @Alias, @SortOrder);
|
|
|
|
SELECT CAST(SCOPE_IDENTITY() AS int) AS CharacterAliasID;
|
|
END;
|
|
GO
|
|
|
|
CREATE OR ALTER PROCEDURE dbo.CharacterAlias_Update
|
|
@CharacterAliasID int,
|
|
@Alias nvarchar(200),
|
|
@SortOrder int = NULL
|
|
AS
|
|
BEGIN
|
|
SET NOCOUNT ON;
|
|
|
|
SET @Alias = LTRIM(RTRIM(@Alias));
|
|
IF NULLIF(@Alias, N'') IS NULL
|
|
THROW 51000, 'Enter an alias before saving.', 1;
|
|
|
|
DECLARE @CharacterID int;
|
|
SELECT @CharacterID = CharacterID FROM dbo.CharacterAliases WHERE CharacterAliasID = @CharacterAliasID;
|
|
|
|
IF EXISTS
|
|
(
|
|
SELECT 1
|
|
FROM dbo.CharacterAliases
|
|
WHERE CharacterID = @CharacterID
|
|
AND CharacterAliasID <> @CharacterAliasID
|
|
AND UPPER(LTRIM(RTRIM(Alias))) = UPPER(@Alias)
|
|
)
|
|
BEGIN
|
|
DELETE dbo.CharacterAliases WHERE CharacterAliasID = @CharacterAliasID;
|
|
RETURN;
|
|
END
|
|
|
|
UPDATE dbo.CharacterAliases
|
|
SET Alias = @Alias,
|
|
SortOrder = COALESCE(@SortOrder, SortOrder)
|
|
WHERE CharacterAliasID = @CharacterAliasID;
|
|
END;
|
|
GO
|
|
|
|
CREATE OR ALTER PROCEDURE dbo.LocationAlias_Add
|
|
@LocationID int,
|
|
@Alias nvarchar(200),
|
|
@SortOrder int = NULL
|
|
AS
|
|
BEGIN
|
|
SET NOCOUNT ON;
|
|
|
|
SET @Alias = LTRIM(RTRIM(@Alias));
|
|
IF NULLIF(@Alias, N'') IS NULL
|
|
THROW 51000, 'Enter an alias before saving.', 1;
|
|
|
|
DECLARE @ExistingLocationAliasID int;
|
|
SELECT TOP (1) @ExistingLocationAliasID = LocationAliasID
|
|
FROM dbo.LocationAliases
|
|
WHERE LocationID = @LocationID
|
|
AND UPPER(LTRIM(RTRIM(Alias))) = UPPER(@Alias)
|
|
ORDER BY LocationAliasID;
|
|
|
|
IF @ExistingLocationAliasID IS NOT NULL
|
|
BEGIN
|
|
IF @SortOrder IS NOT NULL
|
|
UPDATE dbo.LocationAliases SET SortOrder = @SortOrder WHERE LocationAliasID = @ExistingLocationAliasID;
|
|
SELECT @ExistingLocationAliasID AS LocationAliasID;
|
|
RETURN;
|
|
END
|
|
|
|
IF @SortOrder IS NULL
|
|
SELECT @SortOrder = ISNULL(MAX(SortOrder), 0) + 10 FROM dbo.LocationAliases WHERE LocationID = @LocationID;
|
|
|
|
INSERT dbo.LocationAliases (LocationID, Alias, SortOrder)
|
|
VALUES (@LocationID, @Alias, @SortOrder);
|
|
|
|
SELECT CAST(SCOPE_IDENTITY() AS int) AS LocationAliasID;
|
|
END;
|
|
GO
|
|
|
|
CREATE OR ALTER PROCEDURE dbo.LocationAlias_Update
|
|
@LocationAliasID int,
|
|
@Alias nvarchar(200),
|
|
@SortOrder int = NULL
|
|
AS
|
|
BEGIN
|
|
SET NOCOUNT ON;
|
|
|
|
SET @Alias = LTRIM(RTRIM(@Alias));
|
|
IF NULLIF(@Alias, N'') IS NULL
|
|
THROW 51000, 'Enter an alias before saving.', 1;
|
|
|
|
DECLARE @LocationID int;
|
|
SELECT @LocationID = LocationID FROM dbo.LocationAliases WHERE LocationAliasID = @LocationAliasID;
|
|
|
|
IF EXISTS
|
|
(
|
|
SELECT 1
|
|
FROM dbo.LocationAliases
|
|
WHERE LocationID = @LocationID
|
|
AND LocationAliasID <> @LocationAliasID
|
|
AND UPPER(LTRIM(RTRIM(Alias))) = UPPER(@Alias)
|
|
)
|
|
BEGIN
|
|
DELETE dbo.LocationAliases WHERE LocationAliasID = @LocationAliasID;
|
|
RETURN;
|
|
END
|
|
|
|
UPDATE dbo.LocationAliases
|
|
SET Alias = @Alias,
|
|
SortOrder = COALESCE(@SortOrder, SortOrder)
|
|
WHERE LocationAliasID = @LocationAliasID;
|
|
END;
|
|
GO
|
|
|
|
CREATE OR ALTER PROCEDURE dbo.Character_SetPreferredName
|
|
@CharacterID int,
|
|
@PreferredName nvarchar(200)
|
|
AS
|
|
BEGIN
|
|
SET NOCOUNT ON;
|
|
|
|
SET @PreferredName = LTRIM(RTRIM(@PreferredName));
|
|
IF NULLIF(@PreferredName, N'') IS NULL
|
|
THROW 51000, 'Choose a known name before setting the preferred name.', 1;
|
|
|
|
IF NOT EXISTS
|
|
(
|
|
SELECT 1
|
|
FROM dbo.CharacterAliases
|
|
WHERE CharacterID = @CharacterID
|
|
AND UPPER(LTRIM(RTRIM(Alias))) = UPPER(@PreferredName)
|
|
)
|
|
THROW 51000, 'The preferred name must already belong to this character.', 1;
|
|
|
|
UPDATE dbo.Characters
|
|
SET CharacterName = @PreferredName,
|
|
UpdatedDate = SYSUTCDATETIME()
|
|
WHERE CharacterID = @CharacterID;
|
|
END;
|
|
GO
|
|
|
|
CREATE OR ALTER PROCEDURE dbo.Location_SetPreferredName
|
|
@LocationID int,
|
|
@PreferredName nvarchar(200)
|
|
AS
|
|
BEGIN
|
|
SET NOCOUNT ON;
|
|
|
|
SET @PreferredName = LTRIM(RTRIM(@PreferredName));
|
|
IF NULLIF(@PreferredName, N'') IS NULL
|
|
THROW 51000, 'Choose a known name before setting the preferred name.', 1;
|
|
|
|
IF NOT EXISTS
|
|
(
|
|
SELECT 1
|
|
FROM dbo.LocationAliases
|
|
WHERE LocationID = @LocationID
|
|
AND UPPER(LTRIM(RTRIM(Alias))) = UPPER(@PreferredName)
|
|
)
|
|
THROW 51000, 'The preferred name must already belong to this location.', 1;
|
|
|
|
UPDATE dbo.Locations
|
|
SET LocationName = @PreferredName,
|
|
UpdatedDate = SYSUTCDATETIME()
|
|
WHERE LocationID = @LocationID;
|
|
END;
|
|
GO
|
|
|
|
CREATE OR ALTER PROCEDURE dbo.Character_Save
|
|
@CharacterID int = NULL,
|
|
@ProjectID int,
|
|
@CharacterName nvarchar(200),
|
|
@ShortName nvarchar(100) = NULL,
|
|
@SexValueID int = NULL,
|
|
@Sex nvarchar(100) = NULL,
|
|
@BirthDate date = NULL,
|
|
@AgeAtSeriesStart int = NULL,
|
|
@AgeReferenceSceneID int = NULL,
|
|
@Height nvarchar(50) = NULL,
|
|
@EyeColour nvarchar(50) = NULL,
|
|
@CharacterImportance int = NULL,
|
|
@ShowInQuickAddBar bit = 0,
|
|
@DefaultDescription nvarchar(max) = NULL,
|
|
@ImagePath nvarchar(500) = NULL,
|
|
@ThumbnailPath nvarchar(500) = NULL
|
|
AS
|
|
BEGIN
|
|
SET NOCOUNT ON;
|
|
|
|
SET @CharacterName = LTRIM(RTRIM(@CharacterName));
|
|
|
|
IF @CharacterID IS NULL OR @CharacterID = 0
|
|
BEGIN
|
|
INSERT dbo.Characters (ProjectID, CharacterName, ShortName, SexValueID, Sex, BirthDate, AgeAtSeriesStart, AgeReferenceSceneID, Height, EyeColour, CharacterImportance, ShowInQuickAddBar, DefaultDescription, ImagePath, ThumbnailPath)
|
|
VALUES (@ProjectID, @CharacterName, @ShortName, @SexValueID, @Sex, @BirthDate, @AgeAtSeriesStart, @AgeReferenceSceneID, @Height, @EyeColour, @CharacterImportance, @ShowInQuickAddBar, @DefaultDescription, @ImagePath, @ThumbnailPath);
|
|
SET @CharacterID = CAST(SCOPE_IDENTITY() AS int);
|
|
END
|
|
ELSE
|
|
BEGIN
|
|
UPDATE dbo.Characters
|
|
SET CharacterName = @CharacterName, ShortName = @ShortName, SexValueID = @SexValueID, Sex = @Sex, BirthDate = @BirthDate,
|
|
AgeAtSeriesStart = @AgeAtSeriesStart, AgeReferenceSceneID = @AgeReferenceSceneID,
|
|
Height = @Height, EyeColour = @EyeColour, CharacterImportance = @CharacterImportance,
|
|
ShowInQuickAddBar = @ShowInQuickAddBar, DefaultDescription = @DefaultDescription,
|
|
ImagePath = @ImagePath, ThumbnailPath = @ThumbnailPath,
|
|
UpdatedDate = SYSUTCDATETIME()
|
|
WHERE CharacterID = @CharacterID;
|
|
END
|
|
|
|
IF NULLIF(@CharacterName, N'') IS NOT NULL
|
|
AND NOT EXISTS
|
|
(
|
|
SELECT 1
|
|
FROM dbo.CharacterAliases
|
|
WHERE CharacterID = @CharacterID
|
|
AND UPPER(LTRIM(RTRIM(Alias))) = UPPER(@CharacterName)
|
|
)
|
|
BEGIN
|
|
INSERT dbo.CharacterAliases (CharacterID, Alias, SortOrder)
|
|
SELECT @CharacterID,
|
|
@CharacterName,
|
|
ISNULL(MAX(SortOrder), 0) + 10
|
|
FROM dbo.CharacterAliases
|
|
WHERE CharacterID = @CharacterID;
|
|
END
|
|
|
|
SELECT @CharacterID;
|
|
END;
|
|
GO
|
|
|
|
CREATE OR ALTER PROCEDURE dbo.Location_Save
|
|
@LocationID int = NULL,
|
|
@ProjectID int,
|
|
@ParentLocationID int = NULL,
|
|
@LocationName nvarchar(200),
|
|
@LocationTypeID int = NULL,
|
|
@Description nvarchar(max) = NULL,
|
|
@ShowInQuickAddBar bit = 0,
|
|
@ExcludeFromCompanionDetection bit = 0,
|
|
@DetectionPriority int = 50
|
|
AS
|
|
BEGIN
|
|
SET NOCOUNT ON;
|
|
|
|
SET @LocationName = LTRIM(RTRIM(@LocationName));
|
|
SET @DetectionPriority = COALESCE(@DetectionPriority, 50);
|
|
|
|
IF @LocationID IS NULL OR @LocationID = 0
|
|
BEGIN
|
|
INSERT dbo.Locations (ProjectID, ParentLocationID, LocationName, LocationTypeID, Description, ShowInQuickAddBar, ExcludeFromCompanionDetection, DetectionPriority)
|
|
VALUES (@ProjectID, @ParentLocationID, @LocationName, @LocationTypeID, @Description, @ShowInQuickAddBar, @ExcludeFromCompanionDetection, @DetectionPriority);
|
|
|
|
SET @LocationID = CAST(SCOPE_IDENTITY() AS int);
|
|
END
|
|
ELSE
|
|
BEGIN
|
|
UPDATE dbo.Locations
|
|
SET ParentLocationID = @ParentLocationID,
|
|
LocationName = @LocationName,
|
|
LocationTypeID = @LocationTypeID,
|
|
Description = @Description,
|
|
ShowInQuickAddBar = @ShowInQuickAddBar,
|
|
ExcludeFromCompanionDetection = @ExcludeFromCompanionDetection,
|
|
DetectionPriority = @DetectionPriority,
|
|
UpdatedDate = SYSUTCDATETIME()
|
|
WHERE LocationID = @LocationID;
|
|
END
|
|
|
|
IF NULLIF(@LocationName, N'') IS NOT NULL
|
|
AND NOT EXISTS
|
|
(
|
|
SELECT 1
|
|
FROM dbo.LocationAliases
|
|
WHERE LocationID = @LocationID
|
|
AND UPPER(LTRIM(RTRIM(Alias))) = UPPER(@LocationName)
|
|
)
|
|
BEGIN
|
|
INSERT dbo.LocationAliases (LocationID, Alias, SortOrder)
|
|
SELECT @LocationID,
|
|
@LocationName,
|
|
ISNULL(MAX(SortOrder), 0) + 10
|
|
FROM dbo.LocationAliases
|
|
WHERE LocationID = @LocationID;
|
|
END
|
|
|
|
SELECT @LocationID;
|
|
END;
|
|
GO
|