import { Column, Entity, PrimaryGeneratedColumn, CreateDateColumn, UpdateDateColumn, Index, } from 'typeorm'; @Entity({ name: 'frm_integration_user_mapping' }) @Index(['user_id', 'integration_config_id'], { unique: true }) @Index(['integration_config_id']) @Index(['user_id']) export class UserIntegration { @PrimaryGeneratedColumn({ name: 'id', type: 'int' }) id: number; @Column({ name: 'user_id', type: 'int' }) user_id: number; @Column({ name: 'integration_config_id', type: 'int' }) integration_config_id: number; @Column({ name: 'external_user_id', type: 'varchar', length: 255, nullable: true, }) external_user_id: string; @Column({ name: 'external_user_data', type: 'json', nullable: true }) external_user_data: { // Ozonetel agent mapping (admin creds stay in config) agentId?: string; agentEmail?: string; agentPhone?: string; // NOTE: userName, campaignName stay in integration config, not here // Tubelight agent mapping (admin creds stay in config) agentNumber?: string; extension?: string; department?: string; // NOTE: userName, password, tenantId stay in integration config, not here // Common agent fields (no admin credentials) displayName?: string; role?: string; skillLevel?: string; metadata?: any; [key: string]: any; }; @Column({ name: 'status', type: 'int', default: 1, nullable: true }) status: number; @Column({ name: 'is_active', type: 'boolean', default: true, nullable: true }) is_active: boolean; @CreateDateColumn({ name: 'created_at', type: 'timestamp', }) created_at: Date; @UpdateDateColumn({ name: 'updated_at', type: 'timestamp', }) updated_at: Date; }