migration conflicts respolved
This commit is contained in:
parent
84bf6e3dfc
commit
31354f2825
115
src/migrations/2025103000-create-users.ts
Normal file
115
src/migrations/2025103000-create-users.ts
Normal file
@ -0,0 +1,115 @@
|
||||
import { QueryInterface, DataTypes } from 'sequelize';
|
||||
|
||||
/**
|
||||
* Migration: Create users table
|
||||
* This must run FIRST before other tables that reference users
|
||||
*/
|
||||
export async function up(queryInterface: QueryInterface): Promise<void> {
|
||||
// Create users table
|
||||
await queryInterface.createTable('users', {
|
||||
user_id: {
|
||||
type: DataTypes.UUID,
|
||||
primaryKey: true,
|
||||
defaultValue: DataTypes.UUIDV4,
|
||||
field: 'user_id'
|
||||
},
|
||||
employee_id: {
|
||||
type: DataTypes.STRING(50),
|
||||
allowNull: true,
|
||||
field: 'employee_id'
|
||||
},
|
||||
okta_sub: {
|
||||
type: DataTypes.STRING(100),
|
||||
allowNull: false,
|
||||
unique: true,
|
||||
field: 'okta_sub'
|
||||
},
|
||||
email: {
|
||||
type: DataTypes.STRING(255),
|
||||
allowNull: false,
|
||||
unique: true,
|
||||
field: 'email'
|
||||
},
|
||||
first_name: {
|
||||
type: DataTypes.STRING(100),
|
||||
allowNull: true,
|
||||
field: 'first_name'
|
||||
},
|
||||
last_name: {
|
||||
type: DataTypes.STRING(100),
|
||||
allowNull: true,
|
||||
field: 'last_name'
|
||||
},
|
||||
display_name: {
|
||||
type: DataTypes.STRING(200),
|
||||
allowNull: true,
|
||||
field: 'display_name'
|
||||
},
|
||||
department: {
|
||||
type: DataTypes.STRING(100),
|
||||
allowNull: true
|
||||
},
|
||||
designation: {
|
||||
type: DataTypes.STRING(100),
|
||||
allowNull: true
|
||||
},
|
||||
phone: {
|
||||
type: DataTypes.STRING(20),
|
||||
allowNull: true
|
||||
},
|
||||
location: {
|
||||
type: DataTypes.JSONB,
|
||||
allowNull: true
|
||||
},
|
||||
is_active: {
|
||||
type: DataTypes.BOOLEAN,
|
||||
defaultValue: true,
|
||||
field: 'is_active'
|
||||
},
|
||||
is_admin: {
|
||||
type: DataTypes.BOOLEAN,
|
||||
defaultValue: false,
|
||||
field: 'is_admin'
|
||||
},
|
||||
last_login: {
|
||||
type: DataTypes.DATE,
|
||||
allowNull: true,
|
||||
field: 'last_login'
|
||||
},
|
||||
created_at: {
|
||||
type: DataTypes.DATE,
|
||||
allowNull: false,
|
||||
defaultValue: DataTypes.NOW,
|
||||
field: 'created_at'
|
||||
},
|
||||
updated_at: {
|
||||
type: DataTypes.DATE,
|
||||
allowNull: false,
|
||||
defaultValue: DataTypes.NOW,
|
||||
field: 'updated_at'
|
||||
}
|
||||
});
|
||||
|
||||
// Create indexes
|
||||
await queryInterface.addIndex('users', ['email'], {
|
||||
name: 'users_email_idx',
|
||||
unique: true
|
||||
});
|
||||
|
||||
await queryInterface.addIndex('users', ['okta_sub'], {
|
||||
name: 'users_okta_sub_idx',
|
||||
unique: true
|
||||
});
|
||||
|
||||
await queryInterface.addIndex('users', ['employee_id'], {
|
||||
name: 'users_employee_id_idx'
|
||||
});
|
||||
|
||||
console.log('✅ Created users table with indexes');
|
||||
}
|
||||
|
||||
export async function down(queryInterface: QueryInterface): Promise<void> {
|
||||
await queryInterface.dropTable('users');
|
||||
console.log('✅ Dropped users table');
|
||||
}
|
||||
|
||||
@ -1,5 +1,6 @@
|
||||
import { sequelize } from '../config/database';
|
||||
import { QueryInterface, QueryTypes } from 'sequelize';
|
||||
import * as m0 from '../migrations/2025103000-create-users';
|
||||
import * as m1 from '../migrations/2025103001-create-workflow-requests';
|
||||
import * as m2 from '../migrations/2025103002-create-approval-levels';
|
||||
import * as m3 from '../migrations/2025103003-create-participants';
|
||||
@ -14,6 +15,7 @@ import * as m11 from '../migrations/20251104-create-kpi-views';
|
||||
import * as m12 from '../migrations/20251104-create-holidays';
|
||||
import * as m13 from '../migrations/20251104-create-admin-config';
|
||||
import * as m14 from '../migrations/20251105-add-skip-fields-to-approval-levels';
|
||||
import * as m15 from '../migrations/2025110501-alter-tat-days-to-generated';
|
||||
|
||||
interface Migration {
|
||||
name: string;
|
||||
@ -21,7 +23,12 @@ interface Migration {
|
||||
}
|
||||
|
||||
// Define all migrations in order
|
||||
// IMPORTANT: Order matters! Dependencies must be created before tables that reference them
|
||||
const migrations: Migration[] = [
|
||||
// 1. FIRST: Create base tables with no dependencies
|
||||
{ name: '2025103000-create-users', module: m0 }, // ← MUST BE FIRST
|
||||
|
||||
// 2. Tables that depend on users
|
||||
{ name: '2025103001-create-workflow-requests', module: m1 },
|
||||
{ name: '2025103002-create-approval-levels', module: m2 },
|
||||
{ name: '2025103003-create-participants', module: m3 },
|
||||
@ -30,12 +37,15 @@ const migrations: Migration[] = [
|
||||
{ name: '20251031_02_create_activities', module: m6 },
|
||||
{ name: '20251031_03_create_work_notes', module: m7 },
|
||||
{ name: '20251031_04_create_work_note_attachments', module: m8 },
|
||||
|
||||
// 3. Table modifications and additional features
|
||||
{ name: '20251104-add-tat-alert-fields', module: m9 },
|
||||
{ name: '20251104-create-tat-alerts', module: m10 },
|
||||
{ name: '20251104-create-kpi-views', module: m11 },
|
||||
{ name: '20251104-create-holidays', module: m12 },
|
||||
{ name: '20251104-create-admin-config', module: m13 },
|
||||
{ name: '20251105-add-skip-fields-to-approval-levels', module: m14 },
|
||||
{ name: '2025110501-alter-tat-days-to-generated', module: m15 },
|
||||
];
|
||||
|
||||
/**
|
||||
|
||||
Loading…
Reference in New Issue
Block a user