7d7971744e
`string | null` / `uuid | null` columns reflect as Object and crash the backend at metadata build (DataTypeNotSupportedError). Declare explicit `type` on users.phone/email and cluster_allocation_logs FK id columns. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
67 lines
1.8 KiB
TypeScript
67 lines
1.8 KiB
TypeScript
import {
|
|
Entity,
|
|
PrimaryGeneratedColumn,
|
|
Column,
|
|
ManyToOne,
|
|
JoinColumn,
|
|
CreateDateColumn,
|
|
} from 'typeorm';
|
|
import { Cluster } from './cluster.entity';
|
|
import { ClusterPool, PoolStrategy } from './cluster-pool.entity';
|
|
import { Application } from '../../applications/entities/application.entity';
|
|
|
|
export type ClusterAllocationStatus = 'success' | 'failed';
|
|
|
|
@Entity('cluster_allocation_logs')
|
|
export class ClusterAllocationLog {
|
|
@PrimaryGeneratedColumn('uuid')
|
|
id: string;
|
|
|
|
// Explicit `type` required: `string | null` reflects as Object and crashes
|
|
// TypeORM at metadata build (DataTypeNotSupportedError).
|
|
@Column({ type: 'uuid', nullable: true })
|
|
applicationId?: string | null;
|
|
|
|
@ManyToOne(() => Application, { nullable: true, onDelete: 'SET NULL' })
|
|
@JoinColumn({ name: 'applicationId' })
|
|
application: Application;
|
|
|
|
@Column()
|
|
userId: string;
|
|
|
|
@Column({ type: 'uuid', nullable: true })
|
|
poolId?: string | null;
|
|
|
|
@ManyToOne(() => ClusterPool, { nullable: true, onDelete: 'SET NULL' })
|
|
@JoinColumn({ name: 'poolId' })
|
|
pool: ClusterPool;
|
|
|
|
@Column({ type: 'uuid', nullable: true })
|
|
selectedClusterId?: string | null;
|
|
|
|
@ManyToOne(() => Cluster, { nullable: true, onDelete: 'SET NULL' })
|
|
@JoinColumn({ name: 'selectedClusterId' })
|
|
selectedCluster: Cluster;
|
|
|
|
@Column({ default: 'weighted-resource' })
|
|
strategy: PoolStrategy;
|
|
|
|
@Column({ type: 'jsonb', nullable: true })
|
|
estimatedRequest: Record<string, any>;
|
|
|
|
@Column({ type: 'jsonb', nullable: true })
|
|
candidateScores: Record<string, any>[];
|
|
|
|
@Column({ type: 'jsonb', nullable: true })
|
|
rejectionReasons: Record<string, any>[];
|
|
|
|
@Column({ default: 'success' })
|
|
status: ClusterAllocationStatus;
|
|
|
|
@Column({ nullable: true })
|
|
message: string;
|
|
|
|
@CreateDateColumn()
|
|
createdAt: Date;
|
|
}
|