mirror of
https://github.com/HamzaSha1/zod-backend.git
synced 2026-03-10 19:51:46 +00:00
- 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.
37 lines
1.3 KiB
TypeScript
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;
|
|
}
|