feat: add IsActive field to UserClubFeatures for admin management
This commit is contained in:
+18
-18
@@ -6,13 +6,13 @@
|
||||
|
||||
BEGIN TRANSACTION;
|
||||
|
||||
-- Step 1: Validation - Find users with more than 2 children (INVALID for binary tree)
|
||||
-- Step 1: Validation - Find CMS.Users with more than 2 children (INVALID for binary tree)
|
||||
-- این کاربران باید قبل از Migration بررسی شوند
|
||||
SELECT
|
||||
ParentId,
|
||||
COUNT(*) as ChildCount,
|
||||
STRING_AGG(CAST(Id AS VARCHAR), ', ') as ChildIds
|
||||
FROM Users
|
||||
FROM CMS.Users
|
||||
WHERE ParentId IS NOT NULL
|
||||
GROUP BY ParentId
|
||||
HAVING COUNT(*) > 2;
|
||||
@@ -20,8 +20,8 @@ HAVING COUNT(*) > 2;
|
||||
-- اگر نتیجهای بود، باید دستی تصمیم بگیرید کدام 2 فرزند باقی بمانند!
|
||||
-- اگر نتیجهای نبود، ادامه دهید:
|
||||
|
||||
-- Step 2: Copy ParentId → NetworkParentId for all users
|
||||
UPDATE Users
|
||||
-- Step 2: Copy ParentId → NetworkParentId for all CMS.Users
|
||||
UPDATE CMS.Users
|
||||
SET NetworkParentId = ParentId
|
||||
WHERE ParentId IS NOT NULL
|
||||
AND NetworkParentId IS NULL;
|
||||
@@ -33,16 +33,16 @@ WITH RankedChildren AS (
|
||||
Id,
|
||||
ParentId,
|
||||
ROW_NUMBER() OVER (PARTITION BY ParentId ORDER BY Id ASC) as ChildRank
|
||||
FROM Users
|
||||
FROM CMS.Users
|
||||
WHERE ParentId IS NOT NULL
|
||||
)
|
||||
UPDATE Users
|
||||
UPDATE CMS.Users
|
||||
SET LegPosition = CASE
|
||||
WHEN rc.ChildRank = 1 THEN 0 -- Left = 0 (enum value)
|
||||
WHEN rc.ChildRank = 2 THEN 1 -- Right = 1 (enum value)
|
||||
ELSE NULL -- اگر بیشتر از 2 فرزند بود (نباید اتفاق بیفته)
|
||||
END
|
||||
FROM Users u
|
||||
FROM CMS.Users u
|
||||
INNER JOIN RankedChildren rc ON u.Id = rc.Id;
|
||||
|
||||
-- Step 4: Validation - Check for orphaned nodes (Parent doesn't exist)
|
||||
@@ -50,9 +50,9 @@ SELECT
|
||||
Id,
|
||||
NetworkParentId,
|
||||
'Orphaned: Parent does not exist' as Issue
|
||||
FROM Users
|
||||
FROM CMS.Users
|
||||
WHERE NetworkParentId IS NOT NULL
|
||||
AND NetworkParentId NOT IN (SELECT Id FROM Users);
|
||||
AND NetworkParentId NOT IN (SELECT Id FROM CMS.Users);
|
||||
|
||||
-- اگر Orphan یافت شد، باید آنها را NULL کنید یا Parent صحیح تخصیص دهید
|
||||
|
||||
@@ -62,7 +62,7 @@ SELECT
|
||||
NetworkParentId,
|
||||
COUNT(*) as ChildCount,
|
||||
STRING_AGG(CAST(Id AS VARCHAR), ', ') as ChildIds
|
||||
FROM Users
|
||||
FROM CMS.Users
|
||||
WHERE NetworkParentId IS NOT NULL
|
||||
GROUP BY NetworkParentId
|
||||
HAVING COUNT(*) > 2;
|
||||
@@ -71,26 +71,26 @@ HAVING COUNT(*) > 2;
|
||||
|
||||
-- Step 6: Statistics
|
||||
SELECT
|
||||
'Total Users' as Metric,
|
||||
'Total CMS.Users' as Metric,
|
||||
COUNT(*) as Count
|
||||
FROM Users
|
||||
FROM CMS.Users
|
||||
UNION ALL
|
||||
SELECT
|
||||
'Users with NetworkParentId',
|
||||
'CMS.Users with NetworkParentId',
|
||||
COUNT(*)
|
||||
FROM Users
|
||||
FROM CMS.Users
|
||||
WHERE NetworkParentId IS NOT NULL
|
||||
UNION ALL
|
||||
SELECT
|
||||
'Users with LegPosition Left',
|
||||
'CMS.Users with LegPosition Left',
|
||||
COUNT(*)
|
||||
FROM Users
|
||||
FROM CMS.Users
|
||||
WHERE LegPosition = 0
|
||||
UNION ALL
|
||||
SELECT
|
||||
'Users with LegPosition Right',
|
||||
'CMS.Users with LegPosition Right',
|
||||
COUNT(*)
|
||||
FROM Users
|
||||
FROM CMS.Users
|
||||
WHERE LegPosition = 1;
|
||||
|
||||
-- Commit if validation passes
|
||||
|
||||
Reference in New Issue
Block a user