Skip to content

Commit c1ff372

Browse files
authored
Merge pull request #1398 from TechnologyEnhancedLearning/Develop/Fixes/TD-6072_
TD-6072 resource migration script
2 parents 7f2f7cc + ef91d4d commit c1ff372

File tree

2 files changed

+77
-0
lines changed

2 files changed

+77
-0
lines changed

WebAPI/LearningHub.Nhs.Database/LearningHub.Nhs.Database.sqlproj

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -202,6 +202,7 @@
202202
<None Include="Scripts\Pre-Deploy\Scripts\TD-887_PreLoginLandingPageChanges.sql" />
203203
<None Include="Scripts\Pre-Deploy\Scripts\TD-2902 Add resource types to Content Server.sql" />
204204
<None Include="Scripts\Post-Deploy\Scripts\TD-6109_Enable_CDC.sql" />
205+
<None Include="Scripts\LH Database Scripts\Move CC resource to a custom catalogue.sql" />
205206
</ItemGroup>
206207
<ItemGroup>
207208
<RefactorLog Include="LearningHub.Nhs.Database.refactorlog" />
Lines changed: 76 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,76 @@
1+
BEGIN TRY
2+
BEGIN TRANSACTION;
3+
4+
DECLARE @CatalogueId INT = 0; --this is catalog ID in the admin page
5+
DECLARE @ResourceOwnerId INT = 0; -- this is CreateUserId of the resources to be moved.
6+
DECLARE @NodePathId INT;
7+
DECLARE @NewNodeId INT;
8+
DECLARE @NextDisplayOrder INT;
9+
10+
Select @NodePathId = np.Id from hierarchy.CatalogueNodeVersion cnv
11+
inner join hierarchy.NodeVersion nv ON cnv.NodeVersionId = nv.Id
12+
inner join hierarchy.Node n ON nv.NodeId = n.Id
13+
inner join hierarchy.NodePath np ON n.Id = np.NodeId
14+
Where cnv.Id = @CatalogueId and cnv.Deleted = 0 and nv.Deleted = 0 and n.Deleted = 0 and np.Deleted=0;
15+
16+
-- Get the NodeId for the new catalogue
17+
SELECT @NewNodeId = NodeId FROM [hierarchy].[NodePath] WHERE Id = @NodePathId AND Deleted = 0;
18+
19+
-- Get the current max DisplayOrder for that Node
20+
SELECT @NextDisplayOrder = ISNULL(MAX(DisplayOrder), 0) FROM [hierarchy].[NodeResource] WHERE NodeId = @NewNodeId AND Deleted = 0;
21+
22+
DECLARE @UpdatedResources TABLE (ResourceId INT);
23+
24+
INSERT INTO @UpdatedResources (ResourceId)
25+
SELECT DISTINCT rr.ResourceId FROM [resources].[ResourceReference] rr
26+
INNER JOIN [resources].[Resource] r
27+
ON rr.ResourceId = r.Id
28+
WHERE r.CreateUserId = @ResourceOwnerId AND r.Deleted = 0 AND rr.CreateUserId = @ResourceOwnerId AND rr.Deleted = 0 AND rr.NodePathId = 1;
29+
30+
-- Update ResourceReference to point to new catalogue
31+
UPDATE rr
32+
SET rr.NodePathId = @NodePathId
33+
FROM [resources].[ResourceReference] rr
34+
INNER JOIN @UpdatedResources ur
35+
ON rr.ResourceId = ur.ResourceId
36+
WHERE rr.CreateUserId = @ResourceOwnerId
37+
AND rr.Deleted = 0
38+
AND rr.NodePathId = 1;
39+
40+
-- Update NodeResource with new NodeId and incrementing DisplayOrder
41+
;WITH Ordered AS
42+
(
43+
SELECT
44+
nr.ResourceId,
45+
ROW_NUMBER() OVER (ORDER BY nr.ResourceId) AS RowNum
46+
FROM [hierarchy].[NodeResource] nr
47+
INNER JOIN @UpdatedResources ur
48+
ON nr.ResourceId = ur.ResourceId
49+
WHERE nr.NodeId = 1
50+
AND nr.CreateUserId = @ResourceOwnerId
51+
AND nr.Deleted = 0
52+
)
53+
UPDATE nr
54+
SET nr.NodeId = @NewNodeId,nr.DisplayOrder = @NextDisplayOrder + o.RowNum
55+
FROM [hierarchy].[NodeResource] nr
56+
INNER JOIN Ordered o ON nr.ResourceId = o.ResourceId;
57+
58+
59+
--update noderesourcelookup(Im not sure this is absolutely necessary)
60+
update nrl set nrl.NodeId=@NewNodeId FROM [hierarchy].[NodeResourceLookup] nrl
61+
INNER JOIN @UpdatedResources ur ON nrl.ResourceId = ur.ResourceId
62+
WHERE nrl.CreateUserId = @ResourceOwnerId AND nrl.Deleted = 0
63+
64+
-- Show updated resources
65+
SELECT DISTINCT rv.ResourceId, rv.Title FROM [resources].[ResourceVersion] rv
66+
INNER JOIN @UpdatedResources ur ON rv.ResourceId = ur.ResourceId;
67+
68+
COMMIT TRANSACTION;
69+
END TRY
70+
BEGIN CATCH
71+
ROLLBACK TRANSACTION;
72+
73+
SELECT
74+
ERROR_NUMBER() AS ErrorNumber,
75+
ERROR_MESSAGE() AS ErrorMessage;
76+
END CATCH;

0 commit comments

Comments
 (0)