import { Column, CreateDateColumn, Entity, JoinColumn, ManyToOne, PrimaryColumn, UpdateDateColumn } from 'typeorm'; import { User } from './user.entity'; @Entity('devices') export class Device { @PrimaryColumn('varchar', { length: 255 }) deviceId!: string; @Column('varchar', { name: 'user_id' }) userId!: string; @Column('varchar', { name: 'device_name', nullable: true }) deviceName?: string | null; @Column('varchar', { name: 'public_key', nullable: true }) publicKey?: string | null; @Column('varchar', { name: 'fcm_token', nullable: true }) fcmToken?: string | null; @Column('varchar', { name: 'timezone', nullable: true, length: 50 }) timezone?: string | null; // e.g., "Asia/Riyadh", "America/New_York" - auto-detected from device @Column('timestamp with time zone', { name: 'last_access_on', default: () => 'CURRENT_TIMESTAMP' }) lastAccessOn!: Date; @ManyToOne(() => User, (user) => user.devices, { onDelete: 'CASCADE' }) @JoinColumn({ name: 'user_id' }) user!: User; @CreateDateColumn({ name: 'created_at', type: 'timestamp with time zone', default: () => 'CURRENT_TIMESTAMP' }) createdAt!: Date; @UpdateDateColumn({ name: 'updated_at', type: 'timestamp with time zone', default: () => 'CURRENT_TIMESTAMP' }) updatedAt!: Date; }