- 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>
52 lines
1.3 KiB
TypeScript
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;
|
|
}
|