Files
PowderCoatingLogix/fix-migration-data.sql
T
2026-04-23 21:38:24 -04:00

169 lines
6.1 KiB
Transact-SQL

-- Pre-migration script to prepare database for multi-tenancy
-- Run this BEFORE applying the AddMultiTenancy migration
USE PowderCoatingDb;
GO
-- Step 1: Create Companies table manually (without constraints initially)
IF NOT EXISTS (SELECT * FROM sys.tables WHERE name = 'Companies')
BEGIN
CREATE TABLE Companies (
Id INT IDENTITY(1,1) PRIMARY KEY,
CompanyName NVARCHAR(MAX) NOT NULL,
CompanyCode NVARCHAR(450) NULL,
PrimaryContactName NVARCHAR(MAX) NOT NULL,
PrimaryContactEmail NVARCHAR(MAX) NOT NULL,
Phone NVARCHAR(MAX) NULL,
Address NVARCHAR(MAX) NULL,
City NVARCHAR(MAX) NULL,
State NVARCHAR(MAX) NULL,
ZipCode NVARCHAR(MAX) NULL,
IsActive BIT NOT NULL DEFAULT 1,
SubscriptionStartDate DATETIME2 NOT NULL,
SubscriptionEndDate DATETIME2 NULL,
SubscriptionPlan NVARCHAR(MAX) NULL,
TimeZone NVARCHAR(MAX) NULL,
LogoPath NVARCHAR(MAX) NULL,
Settings NVARCHAR(MAX) NULL,
CompanyId INT NOT NULL DEFAULT 0,
CreatedAt DATETIME2 NOT NULL,
UpdatedAt DATETIME2 NULL,
CreatedBy NVARCHAR(MAX) NULL,
UpdatedBy NVARCHAR(MAX) NULL,
IsDeleted BIT NOT NULL DEFAULT 0,
DeletedAt DATETIME2 NULL,
DeletedBy NVARCHAR(MAX) NULL
);
-- Insert default company
INSERT INTO Companies (
CompanyName, CompanyCode, PrimaryContactName, PrimaryContactEmail,
Phone, Address, City, State, ZipCode,
IsActive, SubscriptionStartDate, SubscriptionPlan, TimeZone,
CompanyId, CreatedAt, IsDeleted
) VALUES (
'Demo Company', 'DEMO', 'Admin User', 'admin@demo.com',
'(555) 123-4567', '123 Demo Street', 'Demo City', 'CA', '90210',
1, GETUTCDATE(), 'Enterprise', 'America/New_York',
0, GETUTCDATE(), 0
);
-- Update CompanyId to self-reference
UPDATE Companies SET CompanyId = Id WHERE Id = 1;
PRINT 'Default company created with ID = 1';
END
ELSE
BEGIN
PRINT 'Companies table already exists';
END
GO
-- Step 2: Add CompanyId columns to all tables (if they don't exist)
IF NOT EXISTS (SELECT * FROM sys.columns WHERE object_id = OBJECT_ID('AspNetUsers') AND name = 'CompanyId')
BEGIN
ALTER TABLE AspNetUsers ADD CompanyId INT NULL;
UPDATE AspNetUsers SET CompanyId = 1 WHERE CompanyId IS NULL;
ALTER TABLE AspNetUsers ALTER COLUMN CompanyId INT NOT NULL;
PRINT 'Added CompanyId to AspNetUsers';
END
IF NOT EXISTS (SELECT * FROM sys.columns WHERE object_id = OBJECT_ID('Customers') AND name = 'CompanyId')
BEGIN
ALTER TABLE Customers ADD CompanyId INT NOT NULL DEFAULT 1;
PRINT 'Added CompanyId to Customers';
END
IF NOT EXISTS (SELECT * FROM sys.columns WHERE object_id = OBJECT_ID('Jobs') AND name = 'CompanyId')
BEGIN
ALTER TABLE Jobs ADD CompanyId INT NOT NULL DEFAULT 1;
PRINT 'Added CompanyId to Jobs';
END
IF NOT EXISTS (SELECT * FROM sys.columns WHERE object_id = OBJECT_ID('JobItems') AND name = 'CompanyId')
BEGIN
ALTER TABLE JobItems ADD CompanyId INT NOT NULL DEFAULT 1;
PRINT 'Added CompanyId to JobItems';
END
IF NOT EXISTS (SELECT * FROM sys.columns WHERE object_id = OBJECT_ID('Quotes') AND name = 'CompanyId')
BEGIN
ALTER TABLE Quotes ADD CompanyId INT NOT NULL DEFAULT 1;
PRINT 'Added CompanyId to Quotes';
END
IF NOT EXISTS (SELECT * FROM sys.columns WHERE object_id = OBJECT_ID('QuoteItems') AND name = 'CompanyId')
BEGIN
ALTER TABLE QuoteItems ADD CompanyId INT NOT NULL DEFAULT 1;
PRINT 'Added CompanyId to QuoteItems';
END
IF NOT EXISTS (SELECT * FROM sys.columns WHERE object_id = OBJECT_ID('InventoryItems') AND name = 'CompanyId')
BEGIN
ALTER TABLE InventoryItems ADD CompanyId INT NOT NULL DEFAULT 1;
PRINT 'Added CompanyId to InventoryItems';
END
IF NOT EXISTS (SELECT * FROM sys.columns WHERE object_id = OBJECT_ID('InventoryTransactions') AND name = 'CompanyId')
BEGIN
ALTER TABLE InventoryTransactions ADD CompanyId INT NOT NULL DEFAULT 1;
PRINT 'Added CompanyId to InventoryTransactions';
END
IF NOT EXISTS (SELECT * FROM sys.columns WHERE object_id = OBJECT_ID('Equipment') AND name = 'CompanyId')
BEGIN
ALTER TABLE Equipment ADD CompanyId INT NOT NULL DEFAULT 1;
PRINT 'Added CompanyId to Equipment';
END
IF NOT EXISTS (SELECT * FROM sys.columns WHERE object_id = OBJECT_ID('MaintenanceRecords') AND name = 'CompanyId')
BEGIN
ALTER TABLE MaintenanceRecords ADD CompanyId INT NOT NULL DEFAULT 1;
PRINT 'Added CompanyId to MaintenanceRecords';
END
IF NOT EXISTS (SELECT * FROM sys.columns WHERE object_id = OBJECT_ID('Suppliers') AND name = 'CompanyId')
BEGIN
ALTER TABLE Suppliers ADD CompanyId INT NOT NULL DEFAULT 1;
PRINT 'Added CompanyId to Suppliers';
END
IF NOT EXISTS (SELECT * FROM sys.columns WHERE object_id = OBJECT_ID('PricingTiers') AND name = 'CompanyId')
BEGIN
ALTER TABLE PricingTiers ADD CompanyId INT NOT NULL DEFAULT 1;
PRINT 'Added CompanyId to PricingTiers';
END
IF NOT EXISTS (SELECT * FROM sys.columns WHERE object_id = OBJECT_ID('JobPhotos') AND name = 'CompanyId')
BEGIN
ALTER TABLE JobPhotos ADD CompanyId INT NOT NULL DEFAULT 1;
PRINT 'Added CompanyId to JobPhotos';
END
IF NOT EXISTS (SELECT * FROM sys.columns WHERE object_id = OBJECT_ID('JobNotes') AND name = 'CompanyId')
BEGIN
ALTER TABLE JobNotes ADD CompanyId INT NOT NULL DEFAULT 1;
PRINT 'Added CompanyId to JobNotes';
END
IF NOT EXISTS (SELECT * FROM sys.columns WHERE object_id = OBJECT_ID('CustomerNotes') AND name = 'CompanyId')
BEGIN
ALTER TABLE CustomerNotes ADD CompanyId INT NOT NULL DEFAULT 1;
PRINT 'Added CompanyId to CustomerNotes';
END
IF NOT EXISTS (SELECT * FROM sys.columns WHERE object_id = OBJECT_ID('JobStatusHistory') AND name = 'CompanyId')
BEGIN
ALTER TABLE JobStatusHistory ADD CompanyId INT NOT NULL DEFAULT 1;
PRINT 'Added CompanyId to JobStatusHistory';
END
IF NOT EXISTS (SELECT * FROM sys.columns WHERE object_id = OBJECT_ID('AspNetUsers') AND name = 'CompanyRole')
BEGIN
ALTER TABLE AspNetUsers ADD CompanyRole NVARCHAR(MAX) NULL;
PRINT 'Added CompanyRole to AspNetUsers';
END
PRINT 'Database prepared for multi-tenancy migration';
GO