import { UpdatedAtTrigger, UpdateIdColumn } from 'src/decorators'; import { UserTable } from 'src/schema/tables/user.table'; import { Column, CreateDateColumn, ForeignKeyColumn, Generated, PrimaryGeneratedColumn, Table, Timestamp, UpdateDateColumn, } from 'src/sql-tools'; @Table({ name: 'session' }) @UpdatedAtTrigger('session_updatedAt') export class SessionTable { @PrimaryGeneratedColumn() id!: Generated; // TODO convert to byte[] @Column() token!: string; @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; }