PlotDirector/PlotLine/Sql/149_Phase24_StructuralImportMarkerSync.sql

136 lines
4.4 KiB
Transact-SQL

SET ANSI_NULLS ON;
GO
SET QUOTED_IDENTIFIER ON;
GO
IF COL_LENGTH(N'dbo.OnboardingManuscriptBuilds', N'MarkerSyncMessage') IS NULL
ALTER TABLE dbo.OnboardingManuscriptBuilds ADD MarkerSyncMessage nvarchar(500) NULL;
GO
IF COL_LENGTH(N'dbo.OnboardingManuscriptBuilds', N'MarkerSyncCompletedUtc') IS NULL
ALTER TABLE dbo.OnboardingManuscriptBuilds ADD MarkerSyncCompletedUtc datetime2 NULL;
GO
IF OBJECT_ID(N'dbo.ManuscriptStructuralChapterSources', N'U') IS NULL
BEGIN
CREATE TABLE dbo.ManuscriptStructuralChapterSources
(
ChapterID int NOT NULL CONSTRAINT PK_ManuscriptStructuralChapterSources PRIMARY KEY,
ProjectID int NOT NULL,
BookID int NOT NULL,
SourceText nvarchar(max) NOT NULL,
SourceWordCount int NOT NULL,
SourceCharacterCount int NOT NULL,
ParagraphMapJson nvarchar(max) NULL,
CreatedUtc datetime2 NOT NULL CONSTRAINT DF_ManuscriptStructuralChapterSources_CreatedUtc DEFAULT SYSUTCDATETIME(),
UpdatedUtc datetime2 NOT NULL CONSTRAINT DF_ManuscriptStructuralChapterSources_UpdatedUtc DEFAULT SYSUTCDATETIME(),
CONSTRAINT FK_ManuscriptStructuralChapterSources_Chapters FOREIGN KEY (ChapterID) REFERENCES dbo.Chapters(ChapterID),
CONSTRAINT FK_ManuscriptStructuralChapterSources_Projects FOREIGN KEY (ProjectID) REFERENCES dbo.Projects(ProjectID),
CONSTRAINT FK_ManuscriptStructuralChapterSources_Books FOREIGN KEY (BookID) REFERENCES dbo.Books(BookID)
);
END;
GO
CREATE OR ALTER PROCEDURE dbo.ManuscriptStructuralChapterSource_Save
@ChapterID int,
@ProjectID int,
@BookID int,
@SourceText nvarchar(max),
@SourceWordCount int,
@SourceCharacterCount int,
@ParagraphMapJson nvarchar(max) = NULL
AS
BEGIN
SET NOCOUNT ON;
MERGE dbo.ManuscriptStructuralChapterSources AS target
USING (SELECT @ChapterID AS ChapterID) AS source
ON target.ChapterID = source.ChapterID
WHEN MATCHED THEN
UPDATE SET ProjectID = @ProjectID,
BookID = @BookID,
SourceText = @SourceText,
SourceWordCount = @SourceWordCount,
SourceCharacterCount = @SourceCharacterCount,
ParagraphMapJson = @ParagraphMapJson,
UpdatedUtc = SYSUTCDATETIME()
WHEN NOT MATCHED THEN
INSERT (ChapterID, ProjectID, BookID, SourceText, SourceWordCount, SourceCharacterCount, ParagraphMapJson)
VALUES (@ChapterID, @ProjectID, @BookID, @SourceText, @SourceWordCount, @SourceCharacterCount, @ParagraphMapJson);
END;
GO
CREATE OR ALTER PROCEDURE dbo.Onboarding_ManuscriptBuild_MarkerSyncSent
@BuildID int
AS
BEGIN
SET NOCOUNT ON;
UPDATE dbo.OnboardingManuscriptBuilds
SET MarkerStatus = N'Sent',
MarkerSyncMessage = NULL,
UpdatedUtc = SYSUTCDATETIME()
WHERE OnboardingManuscriptBuildID = @BuildID
AND MarkerStatus IN (N'Pending', N'Failed', N'Sent');
END;
GO
CREATE OR ALTER PROCEDURE dbo.Onboarding_ManuscriptBuild_MarkerSyncCompleted
@BuildID int
AS
BEGIN
SET NOCOUNT ON;
UPDATE dbo.OnboardingManuscriptBuilds
SET MarkerStatus = N'Completed',
MarkerSyncMessage = N'Word markers inserted and document saved.',
MarkerSyncCompletedUtc = SYSUTCDATETIME(),
UpdatedUtc = SYSUTCDATETIME()
WHERE OnboardingManuscriptBuildID = @BuildID;
END;
GO
CREATE OR ALTER PROCEDURE dbo.Onboarding_ManuscriptBuild_MarkerSyncFailed
@BuildID int,
@Message nvarchar(500) = NULL
AS
BEGIN
SET NOCOUNT ON;
UPDATE dbo.OnboardingManuscriptBuilds
SET MarkerStatus = N'Failed',
MarkerSyncMessage = LEFT(NULLIF(LTRIM(RTRIM(@Message)), N''), 500),
UpdatedUtc = SYSUTCDATETIME()
WHERE OnboardingManuscriptBuildID = @BuildID;
END;
GO
CREATE OR ALTER PROCEDURE dbo.StoryIntelligenceSource_ChapterText_GetAdmin
@ChapterID int
AS
BEGIN
SET NOCOUNT ON;
SELECT
p.ProjectID,
p.ProjectName,
b.BookID,
b.BookTitle,
b.Subtitle AS BookSubtitle,
c.ChapterID,
c.ChapterNumber,
c.ChapterTitle,
source.SourceText,
source.SourceWordCount,
source.SourceCharacterCount
FROM dbo.Chapters c
INNER JOIN dbo.Books b ON b.BookID = c.BookID
INNER JOIN dbo.Projects p ON p.ProjectID = b.ProjectID
LEFT JOIN dbo.ManuscriptStructuralChapterSources source ON source.ChapterID = c.ChapterID
WHERE c.ChapterID = @ChapterID
AND c.IsArchived = 0
AND b.IsArchived = 0
AND p.IsArchived = 0;
END;
GO