PlotDirector/PlotLine/Sql/151_BackfillDefaultSceneMetricValues.sql

39 lines
1.2 KiB
Transact-SQL

SET ANSI_NULLS ON;
GO
SET QUOTED_IDENTIFIER ON;
GO
CREATE OR ALTER PROCEDURE dbo.SceneMetric_BackfillDefaultsForProject
@ProjectID int
AS
BEGIN
SET NOCOUNT ON;
DECLARE @Inserted table (SceneID int NOT NULL, MetricTypeID int NOT NULL);
INSERT dbo.SceneMetricValues (SceneID, MetricTypeID, Value, Notes)
OUTPUT inserted.SceneID, inserted.MetricTypeID INTO @Inserted
SELECT s.SceneID, mt.MetricTypeID, mt.DefaultValue, NULL
FROM dbo.Scenes s
INNER JOIN dbo.Chapters c ON c.ChapterID = s.ChapterID
INNER JOIN dbo.Books b ON b.BookID = c.BookID
INNER JOIN dbo.ProjectTimelineMetricSettings ptms ON ptms.ProjectID = b.ProjectID
INNER JOIN dbo.SceneMetricTypes mt ON mt.MetricTypeID = ptms.MetricTypeID
WHERE b.ProjectID = @ProjectID
AND b.IsArchived = 0
AND c.IsArchived = 0
AND s.IsArchived = 0
AND mt.IsActive = 1
AND (mt.ProjectID IS NULL OR mt.ProjectID = @ProjectID)
AND NOT EXISTS
(
SELECT 1
FROM dbo.SceneMetricValues existing
WHERE existing.SceneID = s.SceneID
AND existing.MetricTypeID = mt.MetricTypeID
);
SELECT COUNT(*) FROM @Inserted;
END;
GO