import { Column, CreateDateColumn, ForeignKeyColumn, Generated, PrimaryGeneratedColumn, Table, Timestamp, UpdateDateColumn, } from '@immich/sql-tools'; import { UpdatedAtTrigger, UpdateIdColumn } from 'src/decorators'; import { UserTable } from 'src/schema/tables/user.table'; @Table({ name: 'session' }) @UpdatedAtTrigger('session_updatedAt') export class SessionTable { @PrimaryGeneratedColumn() id!: Generated; @Column({ type: 'bytea', index: true }) token!: Buffer; @CreateDateColumn() createdAt!: Generated; @UpdateDateColumn() updatedAt!: Generated; @Column({ type: 'timestamp with time zone', nullable: true }) expiresAt!: Timestamp | null; @ForeignKeyColumn(() => UserTable, { onUpdate: 'CASCADE', onDelete: 'CASCADE' }) userId!: string; @ForeignKeyColumn(() => SessionTable, { onUpdate: 'CASCADE', onDelete: 'CASCADE', nullable: true }) parentId!: string | null; @Column({ default: '' }) deviceType!: Generated; @Column({ default: '' }) deviceOS!: Generated; @Column({ nullable: true }) appVersion!: string | null; @UpdateIdColumn({ index: true }) updateId!: Generated; @Column({ type: 'boolean', default: false }) isPendingSyncReset!: Generated; @Column({ type: 'timestamp with time zone', nullable: true }) pinExpiresAt!: Timestamp | null; }