Initial commit
This commit is contained in:
@@ -0,0 +1,241 @@
|
||||
-- Safe Multi-Tenancy Migration Script with proper SQL Server settings
|
||||
USE PowderCoatingDb;
|
||||
SET ANSI_NULLS ON;
|
||||
SET QUOTED_IDENTIFIER ON;
|
||||
GO
|
||||
|
||||
PRINT '=== Starting Multi-Tenancy Migration ===';
|
||||
|
||||
-- Step 1: Verify Companies table was created
|
||||
IF NOT EXISTS (SELECT * FROM sys.tables WHERE name = 'Companies')
|
||||
BEGIN
|
||||
RAISERROR('ERROR: Companies table was not created properly!', 16, 1);
|
||||
RETURN;
|
||||
END
|
||||
PRINT 'Companies table exists';
|
||||
|
||||
-- Step 2: Add CompanyId to AspNetUsers
|
||||
IF NOT EXISTS (SELECT * FROM sys.columns WHERE object_id = OBJECT_ID(N'[dbo].[AspNetUsers]') AND name = 'CompanyId')
|
||||
BEGIN
|
||||
ALTER TABLE [dbo].[AspNetUsers] ADD [CompanyId] INT NOT NULL CONSTRAINT DF_AspNetUsers_CompanyId DEFAULT 1;
|
||||
PRINT 'Added CompanyId to AspNetUsers';
|
||||
END
|
||||
ELSE
|
||||
BEGIN
|
||||
PRINT 'CompanyId already exists in AspNetUsers';
|
||||
END
|
||||
|
||||
-- Step 3: Add CompanyRole to AspNetUsers
|
||||
IF NOT EXISTS (SELECT * FROM sys.columns WHERE object_id = OBJECT_ID(N'[dbo].[AspNetUsers]') AND name = 'CompanyRole')
|
||||
BEGIN
|
||||
ALTER TABLE [dbo].[AspNetUsers] ADD [CompanyRole] NVARCHAR(MAX) NULL;
|
||||
PRINT 'Added CompanyRole to AspNetUsers';
|
||||
END
|
||||
|
||||
-- Step 4: Add CompanyId to all other tables
|
||||
IF NOT EXISTS (SELECT * FROM sys.columns WHERE object_id = OBJECT_ID(N'[dbo].[Customers]') AND name = 'CompanyId')
|
||||
BEGIN
|
||||
ALTER TABLE [dbo].[Customers] ADD [CompanyId] INT NOT NULL CONSTRAINT DF_Customers_CompanyId DEFAULT 1;
|
||||
PRINT 'Added CompanyId to Customers';
|
||||
END
|
||||
|
||||
IF NOT EXISTS (SELECT * FROM sys.columns WHERE object_id = OBJECT_ID(N'[dbo].[Jobs]') AND name = 'CompanyId')
|
||||
BEGIN
|
||||
ALTER TABLE [dbo].[Jobs] ADD [CompanyId] INT NOT NULL CONSTRAINT DF_Jobs_CompanyId DEFAULT 1;
|
||||
PRINT 'Added CompanyId to Jobs';
|
||||
END
|
||||
|
||||
IF NOT EXISTS (SELECT * FROM sys.columns WHERE object_id = OBJECT_ID(N'[dbo].[JobItems]') AND name = 'CompanyId')
|
||||
BEGIN
|
||||
ALTER TABLE [dbo].[JobItems] ADD [CompanyId] INT NOT NULL CONSTRAINT DF_JobItems_CompanyId DEFAULT 1;
|
||||
PRINT 'Added CompanyId to JobItems';
|
||||
END
|
||||
|
||||
IF NOT EXISTS (SELECT * FROM sys.columns WHERE object_id = OBJECT_ID(N'[dbo].[Quotes]') AND name = 'CompanyId')
|
||||
BEGIN
|
||||
ALTER TABLE [dbo].[Quotes] ADD [CompanyId] INT NOT NULL CONSTRAINT DF_Quotes_CompanyId DEFAULT 1;
|
||||
PRINT 'Added CompanyId to Quotes';
|
||||
END
|
||||
|
||||
IF NOT EXISTS (SELECT * FROM sys.columns WHERE object_id = OBJECT_ID(N'[dbo].[QuoteItems]') AND name = 'CompanyId')
|
||||
BEGIN
|
||||
ALTER TABLE [dbo].[QuoteItems] ADD [CompanyId] INT NOT NULL CONSTRAINT DF_QuoteItems_CompanyId DEFAULT 1;
|
||||
PRINT 'Added CompanyId to QuoteItems';
|
||||
END
|
||||
|
||||
IF NOT EXISTS (SELECT * FROM sys.columns WHERE object_id = OBJECT_ID(N'[dbo].[InventoryItems]') AND name = 'CompanyId')
|
||||
BEGIN
|
||||
ALTER TABLE [dbo].[InventoryItems] ADD [CompanyId] INT NOT NULL CONSTRAINT DF_InventoryItems_CompanyId DEFAULT 1;
|
||||
PRINT 'Added CompanyId to InventoryItems';
|
||||
END
|
||||
|
||||
IF NOT EXISTS (SELECT * FROM sys.columns WHERE object_id = OBJECT_ID(N'[dbo].[InventoryTransactions]') AND name = 'CompanyId')
|
||||
BEGIN
|
||||
ALTER TABLE [dbo].[InventoryTransactions] ADD [CompanyId] INT NOT NULL CONSTRAINT DF_InventoryTransactions_CompanyId DEFAULT 1;
|
||||
PRINT 'Added CompanyId to InventoryTransactions';
|
||||
END
|
||||
|
||||
IF NOT EXISTS (SELECT * FROM sys.columns WHERE object_id = OBJECT_ID(N'[dbo].[Equipment]') AND name = 'CompanyId')
|
||||
BEGIN
|
||||
ALTER TABLE [dbo].[Equipment] ADD [CompanyId] INT NOT NULL CONSTRAINT DF_Equipment_CompanyId DEFAULT 1;
|
||||
PRINT 'Added CompanyId to Equipment';
|
||||
END
|
||||
|
||||
IF NOT EXISTS (SELECT * FROM sys.columns WHERE object_id = OBJECT_ID(N'[dbo].[MaintenanceRecords]') AND name = 'CompanyId')
|
||||
BEGIN
|
||||
ALTER TABLE [dbo].[MaintenanceRecords] ADD [CompanyId] INT NOT NULL CONSTRAINT DF_MaintenanceRecords_CompanyId DEFAULT 1;
|
||||
PRINT 'Added CompanyId to MaintenanceRecords';
|
||||
END
|
||||
|
||||
IF NOT EXISTS (SELECT * FROM sys.columns WHERE object_id = OBJECT_ID(N'[dbo].[Suppliers]') AND name = 'CompanyId')
|
||||
BEGIN
|
||||
ALTER TABLE [dbo].[Suppliers] ADD [CompanyId] INT NOT NULL CONSTRAINT DF_Suppliers_CompanyId DEFAULT 1;
|
||||
PRINT 'Added CompanyId to Suppliers';
|
||||
END
|
||||
|
||||
IF NOT EXISTS (SELECT * FROM sys.columns WHERE object_id = OBJECT_ID(N'[dbo].[PricingTiers]') AND name = 'CompanyId')
|
||||
BEGIN
|
||||
ALTER TABLE [dbo].[PricingTiers] ADD [CompanyId] INT NOT NULL CONSTRAINT DF_PricingTiers_CompanyId DEFAULT 1;
|
||||
PRINT 'Added CompanyId to PricingTiers';
|
||||
-- Update seeded pricing tiers
|
||||
UPDATE [dbo].[PricingTiers] SET [CompanyId] = 1 WHERE [CompanyId] = 0;
|
||||
END
|
||||
|
||||
IF NOT EXISTS (SELECT * FROM sys.columns WHERE object_id = OBJECT_ID(N'[dbo].[JobPhotos]') AND name = 'CompanyId')
|
||||
BEGIN
|
||||
ALTER TABLE [dbo].[JobPhotos] ADD [CompanyId] INT NOT NULL CONSTRAINT DF_JobPhotos_CompanyId DEFAULT 1;
|
||||
PRINT 'Added CompanyId to JobPhotos';
|
||||
END
|
||||
|
||||
IF NOT EXISTS (SELECT * FROM sys.columns WHERE object_id = OBJECT_ID(N'[dbo].[JobNotes]') AND name = 'CompanyId')
|
||||
BEGIN
|
||||
ALTER TABLE [dbo].[JobNotes] ADD [CompanyId] INT NOT NULL CONSTRAINT DF_JobNotes_CompanyId DEFAULT 1;
|
||||
PRINT 'Added CompanyId to JobNotes';
|
||||
END
|
||||
|
||||
IF NOT EXISTS (SELECT * FROM sys.columns WHERE object_id = OBJECT_ID(N'[dbo].[CustomerNotes]') AND name = 'CompanyId')
|
||||
BEGIN
|
||||
ALTER TABLE [dbo].[CustomerNotes] ADD [CompanyId] INT NOT NULL CONSTRAINT DF_CustomerNotes_CompanyId DEFAULT 1;
|
||||
PRINT 'Added CompanyId to CustomerNotes';
|
||||
END
|
||||
|
||||
IF NOT EXISTS (SELECT * FROM sys.columns WHERE object_id = OBJECT_ID(N'[dbo].[JobStatusHistory]') AND name = 'CompanyId')
|
||||
BEGIN
|
||||
ALTER TABLE [dbo].[JobStatusHistory] ADD [CompanyId] INT NOT NULL CONSTRAINT DF_JobStatusHistory_CompanyId DEFAULT 1;
|
||||
PRINT 'Added CompanyId to JobStatusHistory';
|
||||
END
|
||||
|
||||
GO
|
||||
|
||||
-- Step 5: Create Indexes
|
||||
PRINT '=== Creating Indexes ===';
|
||||
|
||||
IF NOT EXISTS (SELECT * FROM sys.indexes WHERE name = 'IX_Customers_CompanyId')
|
||||
CREATE INDEX [IX_Customers_CompanyId] ON [dbo].[Customers]([CompanyId]);
|
||||
|
||||
IF NOT EXISTS (SELECT * FROM sys.indexes WHERE name = 'IX_Jobs_CompanyId')
|
||||
CREATE INDEX [IX_Jobs_CompanyId] ON [dbo].[Jobs]([CompanyId]);
|
||||
|
||||
IF NOT EXISTS (SELECT * FROM sys.indexes WHERE name = 'IX_Equipment_CompanyId')
|
||||
CREATE INDEX [IX_Equipment_CompanyId] ON [dbo].[Equipment]([CompanyId]);
|
||||
|
||||
IF NOT EXISTS (SELECT * FROM sys.indexes WHERE name = 'IX_Quotes_CompanyId')
|
||||
CREATE INDEX [IX_Quotes_CompanyId] ON [dbo].[Quotes]([CompanyId]);
|
||||
|
||||
IF NOT EXISTS (SELECT * FROM sys.indexes WHERE name = 'IX_InventoryItems_CompanyId')
|
||||
CREATE INDEX [IX_InventoryItems_CompanyId] ON [dbo].[InventoryItems]([CompanyId]);
|
||||
|
||||
IF NOT EXISTS (SELECT * FROM sys.indexes WHERE name = 'IX_Suppliers_CompanyId')
|
||||
CREATE INDEX [IX_Suppliers_CompanyId] ON [dbo].[Suppliers]([CompanyId]);
|
||||
|
||||
IF NOT EXISTS (SELECT * FROM sys.indexes WHERE name = 'IX_PricingTiers_CompanyId')
|
||||
CREATE INDEX [IX_PricingTiers_CompanyId] ON [dbo].[PricingTiers]([CompanyId]);
|
||||
|
||||
IF NOT EXISTS (SELECT * FROM sys.indexes WHERE name = 'IX_AspNetUsers_CompanyId')
|
||||
CREATE INDEX [IX_AspNetUsers_CompanyId] ON [dbo].[AspNetUsers]([CompanyId]);
|
||||
|
||||
PRINT 'Indexes created';
|
||||
GO
|
||||
|
||||
-- Step 6: Add Foreign Keys
|
||||
PRINT '=== Adding Foreign Keys ===';
|
||||
|
||||
IF NOT EXISTS (SELECT * FROM sys.foreign_keys WHERE name = 'FK_AspNetUsers_Companies_CompanyId')
|
||||
BEGIN
|
||||
ALTER TABLE [dbo].[AspNetUsers]
|
||||
ADD CONSTRAINT [FK_AspNetUsers_Companies_CompanyId]
|
||||
FOREIGN KEY ([CompanyId]) REFERENCES [dbo].[Companies]([Id]);
|
||||
PRINT 'Added FK: AspNetUsers -> Companies';
|
||||
END
|
||||
|
||||
IF NOT EXISTS (SELECT * FROM sys.foreign_keys WHERE name = 'FK_Customers_Companies_CompanyId')
|
||||
BEGIN
|
||||
ALTER TABLE [dbo].[Customers]
|
||||
ADD CONSTRAINT [FK_Customers_Companies_CompanyId]
|
||||
FOREIGN KEY ([CompanyId]) REFERENCES [dbo].[Companies]([Id]);
|
||||
PRINT 'Added FK: Customers -> Companies';
|
||||
END
|
||||
|
||||
IF NOT EXISTS (SELECT * FROM sys.foreign_keys WHERE name = 'FK_Jobs_Companies_CompanyId')
|
||||
BEGIN
|
||||
ALTER TABLE [dbo].[Jobs]
|
||||
ADD CONSTRAINT [FK_Jobs_Companies_CompanyId]
|
||||
FOREIGN KEY ([CompanyId]) REFERENCES [dbo].[Companies]([Id]);
|
||||
PRINT 'Added FK: Jobs -> Companies';
|
||||
END
|
||||
|
||||
IF NOT EXISTS (SELECT * FROM sys.foreign_keys WHERE name = 'FK_Equipment_Companies_CompanyId')
|
||||
BEGIN
|
||||
ALTER TABLE [dbo].[Equipment]
|
||||
ADD CONSTRAINT [FK_Equipment_Companies_CompanyId]
|
||||
FOREIGN KEY ([CompanyId]) REFERENCES [dbo].[Companies]([Id]);
|
||||
PRINT 'Added FK: Equipment -> Companies';
|
||||
END
|
||||
|
||||
IF NOT EXISTS (SELECT * FROM sys.foreign_keys WHERE name = 'FK_Quotes_Companies_CompanyId')
|
||||
BEGIN
|
||||
ALTER TABLE [dbo].[Quotes]
|
||||
ADD CONSTRAINT [FK_Quotes_Companies_CompanyId]
|
||||
FOREIGN KEY ([CompanyId]) REFERENCES [dbo].[Companies]([Id]);
|
||||
PRINT 'Added FK: Quotes -> Companies';
|
||||
END
|
||||
|
||||
IF NOT EXISTS (SELECT * FROM sys.foreign_keys WHERE name = 'FK_InventoryItems_Companies_CompanyId')
|
||||
BEGIN
|
||||
ALTER TABLE [dbo].[InventoryItems]
|
||||
ADD CONSTRAINT [FK_InventoryItems_Companies_CompanyId]
|
||||
FOREIGN KEY ([CompanyId]) REFERENCES [dbo].[Companies]([Id]);
|
||||
PRINT 'Added FK: InventoryItems -> Companies';
|
||||
END
|
||||
|
||||
IF NOT EXISTS (SELECT * FROM sys.foreign_keys WHERE name = 'FK_Suppliers_Companies_CompanyId')
|
||||
BEGIN
|
||||
ALTER TABLE [dbo].[Suppliers]
|
||||
ADD CONSTRAINT [FK_Suppliers_Companies_CompanyId]
|
||||
FOREIGN KEY ([CompanyId]) REFERENCES [dbo].[Companies]([Id]);
|
||||
PRINT 'Added FK: Suppliers -> Companies';
|
||||
END
|
||||
|
||||
IF NOT EXISTS (SELECT * FROM sys.foreign_keys WHERE name = 'FK_PricingTiers_Companies_CompanyId')
|
||||
BEGIN
|
||||
ALTER TABLE [dbo].[PricingTiers]
|
||||
ADD CONSTRAINT [FK_PricingTiers_Companies_CompanyId]
|
||||
FOREIGN KEY ([CompanyId]) REFERENCES [dbo].[Companies]([Id]);
|
||||
PRINT 'Added FK: PricingTiers -> Companies';
|
||||
END
|
||||
|
||||
PRINT 'All foreign keys added';
|
||||
GO
|
||||
|
||||
PRINT '';
|
||||
PRINT '==============================================';
|
||||
PRINT ' Multi-Tenancy Migration COMPLETE!';
|
||||
PRINT '==============================================';
|
||||
PRINT '';
|
||||
PRINT 'Next steps:';
|
||||
PRINT '1. Run: dotnet run --project src/PowderCoating.Web';
|
||||
PRINT '2. Login: superadmin@powdercoating.com / SuperAdmin123!';
|
||||
PRINT '3. Or login: admin@demo.com / CompanyAdmin123!';
|
||||
PRINT '';
|
||||
PRINT '==============================================';
|
||||
GO
|
||||
Reference in New Issue
Block a user