Files
zod-backend/src/user/entities/device.entity.ts
Abdalhamid Alhamad 6d6dc1471f feat: add timezone support to user and device entities
- Introduced optional timezone fields in User and Device entities to store user preferences and device timezones.
- Updated request DTOs for login and user updates to include timezone information.
- Enhanced AuthService to handle timezone during device registration and updates.
- Added migration to incorporate timezone fields in the database schema.
2026-01-14 16:12:08 +03:00

37 lines
1.3 KiB
TypeScript

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;
}