import { Column, CreateDateColumn, DeleteDateColumn, ForeignKeyColumn, Generated, PrimaryGeneratedColumn, Table, Timestamp, UpdateDateColumn, } from '@immich/sql-tools'; import { UpdatedAtTrigger, UpdateIdColumn } from 'src/decorators'; import { NotificationLevel, NotificationType } from 'src/enum'; import { UserTable } from 'src/schema/tables/user.table'; @Table('notification') @UpdatedAtTrigger('notification_updatedAt') export class NotificationTable { @PrimaryGeneratedColumn() id!: Generated; @CreateDateColumn() createdAt!: Generated; @UpdateDateColumn() updatedAt!: Generated; @DeleteDateColumn() deletedAt!: Timestamp | null; @UpdateIdColumn({ index: true }) updateId!: Generated; @ForeignKeyColumn(() => UserTable, { onDelete: 'CASCADE', onUpdate: 'CASCADE', nullable: true }) userId!: string; @Column({ default: NotificationLevel.Info }) level!: Generated; @Column({ default: NotificationLevel.Info }) type!: Generated; @Column({ type: 'jsonb', nullable: true }) data!: unknown | null; @Column() title!: string; @Column({ type: 'text', nullable: true }) description!: string | null; @Column({ type: 'timestamp with time zone', nullable: true }) readAt!: Timestamp | null; }