erp-core-backend-v2/src/modules/settings/entities/user-preference.entity.ts
Adrian Flores Cortes 8565056de3 feat(settings): Add complete backend Settings module
- Entities: SystemSetting, PlanSetting, TenantSetting, UserPreference
- Services: SystemSettingsService, TenantSettingsService, UserPreferencesService
- Controllers: system-settings, tenant-settings, user-preferences
- DTOs: update-system-setting, update-tenant-setting, update-user-preference, settings-filters
- Module and routes registration

Implements RF-SETTINGS-001, RF-SETTINGS-002, RF-SETTINGS-003

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-26 16:33:55 -06:00

52 lines
1.3 KiB
TypeScript

import {
Entity,
PrimaryGeneratedColumn,
Column,
CreateDateColumn,
UpdateDateColumn,
Index,
Unique,
} from 'typeorm';
/**
* User Preferences Entity (schema: core_settings.user_preferences)
*
* Personal preferences for individual users.
* These are user-specific settings like theme, language, notification preferences.
*
* Common keys:
* - ui.theme: 'light' | 'dark' | 'system'
* - ui.language: ISO language code
* - ui.dateFormat: Date format string
* - ui.numberFormat: Number format locale
* - notifications.email: boolean
* - notifications.push: boolean
* - notifications.inApp: boolean
*/
@Entity({ name: 'user_preferences', schema: 'core_settings' })
@Unique(['userId', 'key'])
export class UserPreference {
@PrimaryGeneratedColumn('uuid')
id: string;
@Index()
@Column({ name: 'user_id', type: 'uuid' })
userId: string;
@Index()
@Column({ name: 'key', type: 'varchar', length: 100 })
key: string;
@Column({ name: 'value', type: 'jsonb' })
value: any;
@Column({ name: 'synced_at', type: 'timestamptz', default: () => 'CURRENT_TIMESTAMP' })
syncedAt: Date;
@CreateDateColumn({ name: 'created_at', type: 'timestamptz' })
createdAt: Date;
@UpdateDateColumn({ name: 'updated_at', type: 'timestamptz' })
updatedAt: Date;
}