Files
paperlessmanager/paperless-backend/src/database/entities/inbox-document.entity.ts
T

65 lines
1.3 KiB
TypeScript

import {
Entity,
PrimaryColumn,
Column,
CreateDateColumn,
UpdateDateColumn,
Index,
} from 'typeorm';
export type InboxSource = 'all' | 'user';
export interface StoredQrCode {
page: number;
value: string;
}
@Entity('inbox_documents')
@Index(['Source', 'OwnerUsername'])
export class InboxDocument {
@PrimaryColumn({ type: 'char', length: 36 })
Id!: string;
@Column({ type: 'varchar', length: 255 })
OriginalName!: string;
@Column({ type: 'varchar', length: 10 })
Source!: InboxSource;
@Column({ type: 'varchar', length: 100, nullable: true })
OwnerUsername!: string | null;
@Column({ type: 'int', default: 0 })
PageCount!: number;
@Column({ type: 'json' })
QrCodes!: StoredQrCode[];
@Column({
type: 'json',
nullable: true,
transformer: {
to: (v: number[] | null | undefined) => (v && v.length ? v : null),
from: (v: number[] | null) => v ?? [],
},
})
DeletedPages!: number[];
@Column({
type: 'json',
nullable: true,
transformer: {
to: (v: Record<string, number> | null | undefined) =>
v && Object.keys(v).length ? v : null,
from: (v: Record<string, number> | null) => v ?? {},
},
})
Rotations!: Record<string, number>;
@CreateDateColumn()
CreatedAt!: Date;
@UpdateDateColumn()
UpdatedAt!: Date;
}