153 lines
5.7 KiB
Transact-SQL
153 lines
5.7 KiB
Transact-SQL
SET ANSI_NULLS ON;
|
|
GO
|
|
SET QUOTED_IDENTIFIER ON;
|
|
GO
|
|
|
|
IF OBJECT_ID(N'dbo.SceneManuscriptSources', N'U') IS NULL
|
|
BEGIN
|
|
CREATE TABLE dbo.SceneManuscriptSources
|
|
(
|
|
SceneID int NOT NULL CONSTRAINT PK_SceneManuscriptSources PRIMARY KEY,
|
|
ProjectID int NOT NULL,
|
|
BookID int NOT NULL,
|
|
ChapterID int NOT NULL,
|
|
SourceText nvarchar(max) NOT NULL,
|
|
SourceWordCount int NOT NULL,
|
|
SourceCharacterCount int NOT NULL,
|
|
SourceStartParagraph int NULL,
|
|
SourceEndParagraph int NULL,
|
|
WordStartParagraphIndex int NULL,
|
|
WordEndParagraphIndex int NULL,
|
|
SourceKind nvarchar(80) NOT NULL CONSTRAINT DF_SceneManuscriptSources_SourceKind DEFAULT N'StructuralImport',
|
|
CreatedUtc datetime2 NOT NULL CONSTRAINT DF_SceneManuscriptSources_CreatedUtc DEFAULT SYSUTCDATETIME(),
|
|
UpdatedUtc datetime2 NOT NULL CONSTRAINT DF_SceneManuscriptSources_UpdatedUtc DEFAULT SYSUTCDATETIME(),
|
|
CONSTRAINT FK_SceneManuscriptSources_Scenes FOREIGN KEY (SceneID) REFERENCES dbo.Scenes(SceneID),
|
|
CONSTRAINT FK_SceneManuscriptSources_Projects FOREIGN KEY (ProjectID) REFERENCES dbo.Projects(ProjectID),
|
|
CONSTRAINT FK_SceneManuscriptSources_Books FOREIGN KEY (BookID) REFERENCES dbo.Books(BookID),
|
|
CONSTRAINT FK_SceneManuscriptSources_Chapters FOREIGN KEY (ChapterID) REFERENCES dbo.Chapters(ChapterID)
|
|
);
|
|
END;
|
|
GO
|
|
|
|
IF NOT EXISTS (SELECT 1 FROM sys.indexes WHERE name = N'IX_SceneManuscriptSources_BookChapter' AND object_id = OBJECT_ID(N'dbo.SceneManuscriptSources'))
|
|
CREATE INDEX IX_SceneManuscriptSources_BookChapter ON dbo.SceneManuscriptSources(BookID, ChapterID, SceneID);
|
|
GO
|
|
|
|
CREATE OR ALTER PROCEDURE dbo.SceneManuscriptSource_Save
|
|
@SceneID int,
|
|
@ProjectID int,
|
|
@BookID int,
|
|
@ChapterID int,
|
|
@SourceText nvarchar(max),
|
|
@SourceWordCount int,
|
|
@SourceCharacterCount int,
|
|
@SourceStartParagraph int = NULL,
|
|
@SourceEndParagraph int = NULL,
|
|
@WordStartParagraphIndex int = NULL,
|
|
@WordEndParagraphIndex int = NULL,
|
|
@SourceKind nvarchar(80) = N'StructuralImport'
|
|
AS
|
|
BEGIN
|
|
SET NOCOUNT ON;
|
|
|
|
MERGE dbo.SceneManuscriptSources AS target
|
|
USING (SELECT @SceneID AS SceneID) AS source
|
|
ON target.SceneID = source.SceneID
|
|
WHEN MATCHED THEN
|
|
UPDATE SET ProjectID = @ProjectID,
|
|
BookID = @BookID,
|
|
ChapterID = @ChapterID,
|
|
SourceText = @SourceText,
|
|
SourceWordCount = @SourceWordCount,
|
|
SourceCharacterCount = @SourceCharacterCount,
|
|
SourceStartParagraph = @SourceStartParagraph,
|
|
SourceEndParagraph = @SourceEndParagraph,
|
|
WordStartParagraphIndex = @WordStartParagraphIndex,
|
|
WordEndParagraphIndex = @WordEndParagraphIndex,
|
|
SourceKind = @SourceKind,
|
|
UpdatedUtc = SYSUTCDATETIME()
|
|
WHEN NOT MATCHED THEN
|
|
INSERT
|
|
(
|
|
SceneID, ProjectID, BookID, ChapterID, SourceText, SourceWordCount, SourceCharacterCount,
|
|
SourceStartParagraph, SourceEndParagraph, WordStartParagraphIndex, WordEndParagraphIndex, SourceKind
|
|
)
|
|
VALUES
|
|
(
|
|
@SceneID, @ProjectID, @BookID, @ChapterID, @SourceText, @SourceWordCount, @SourceCharacterCount,
|
|
@SourceStartParagraph, @SourceEndParagraph, @WordStartParagraphIndex, @WordEndParagraphIndex, @SourceKind
|
|
);
|
|
END;
|
|
GO
|
|
|
|
CREATE OR ALTER PROCEDURE dbo.SceneManuscriptSource_GetByScene
|
|
@SceneID int
|
|
AS
|
|
BEGIN
|
|
SET NOCOUNT ON;
|
|
|
|
SELECT SceneID, ProjectID, BookID, ChapterID, SourceText, SourceWordCount, SourceCharacterCount,
|
|
SourceStartParagraph, SourceEndParagraph, WordStartParagraphIndex, WordEndParagraphIndex, SourceKind,
|
|
CreatedUtc, UpdatedUtc
|
|
FROM dbo.SceneManuscriptSources
|
|
WHERE SceneID = @SceneID;
|
|
END;
|
|
GO
|
|
|
|
CREATE OR ALTER PROCEDURE dbo.SceneManuscriptSource_ListByChapter
|
|
@ChapterID int
|
|
AS
|
|
BEGIN
|
|
SET NOCOUNT ON;
|
|
|
|
SELECT source.SceneID, source.ProjectID, source.BookID, source.ChapterID, source.SourceText,
|
|
source.SourceWordCount, source.SourceCharacterCount, source.SourceStartParagraph, source.SourceEndParagraph,
|
|
source.WordStartParagraphIndex, source.WordEndParagraphIndex, source.SourceKind, source.CreatedUtc, source.UpdatedUtc
|
|
FROM dbo.SceneManuscriptSources source
|
|
INNER JOIN dbo.Scenes scene ON scene.SceneID = source.SceneID
|
|
WHERE source.ChapterID = @ChapterID
|
|
AND scene.IsArchived = 0
|
|
ORDER BY scene.SortOrder, scene.SceneNumber, scene.SceneID;
|
|
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,
|
|
sourceText.SourceText,
|
|
sourceText.SourceWordCount,
|
|
sourceText.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
|
|
OUTER APPLY
|
|
(
|
|
SELECT
|
|
STRING_AGG(CONVERT(nvarchar(max), sms.SourceText), CHAR(13) + CHAR(10) + CHAR(13) + CHAR(10))
|
|
WITHIN GROUP (ORDER BY s.SortOrder, s.SceneNumber, s.SceneID) AS SourceText,
|
|
SUM(sms.SourceWordCount) AS SourceWordCount,
|
|
SUM(sms.SourceCharacterCount) AS SourceCharacterCount
|
|
FROM dbo.Scenes s
|
|
INNER JOIN dbo.SceneManuscriptSources sms ON sms.SceneID = s.SceneID
|
|
WHERE s.ChapterID = c.ChapterID
|
|
AND s.IsArchived = 0
|
|
) sourceText
|
|
WHERE c.ChapterID = @ChapterID
|
|
AND c.IsArchived = 0
|
|
AND b.IsArchived = 0
|
|
AND p.IsArchived = 0;
|
|
END;
|
|
GO
|