import { Entity, PrimaryGeneratedColumn, Column, CreateDateColumn, UpdateDateColumn, } from 'typeorm'; export type BarcodeActionType = 'SEND_TO_PAPERLESS' | 'SEND_BY_EMAIL'; export interface LabelInputField { name: string; label: string; type: 'text' | 'number' | 'date'; } export type LabelElement = | { type: 'text'; content: string; x: number; y: number; fontSize: number; bold?: boolean; align?: 'left' | 'center' | 'right'; maxWidth?: number } | { type: 'qr'; content: string; x: number; y: number; sizeMm: number } | { type: 'line'; x1: number; y1: number; x2: number; y2: number; lineWidth?: number }; @Entity('barcode_templates') export class BarcodeTemplate { @PrimaryGeneratedColumn() Id!: number; @Column({ type: 'varchar', length: 100 }) Name!: string; @Column({ type: 'varchar', length: 500 }) Regex!: string; @Column({ type: 'boolean', default: false }) SplitBefore!: boolean; @Column({ type: 'varchar', length: 500, nullable: true }) DateinameTemplate!: string | null; @Column({ type: 'json' }) Actions!: BarcodeActionType[]; // ── Label-Konfiguration ───────────────────────────────────── @Column({ type: 'boolean', default: false }) LabelEnabled!: boolean; @Column({ type: 'int', nullable: true }) LabelWidthMm!: number | null; @Column({ type: 'int', nullable: true }) LabelHeightMm!: number | null; @Column({ type: 'json', nullable: true }) LabelInputFields!: LabelInputField[] | null; @Column({ type: 'varchar', length: 1000, nullable: true }) LabelGetUrl!: string | null; @Column({ type: 'varchar', length: 1000, nullable: true }) LabelPrintedUrl!: string | null; @Column({ type: 'varchar', length: 1000, nullable: true }) LabelReleaseUrl!: string | null; @Column({ type: 'json', nullable: true }) LabelLayout!: LabelElement[] | null; @CreateDateColumn() CreatedAt!: Date; @UpdateDateColumn() UpdatedAt!: Date; }