Made id required (breaking change) - reverted back to optional This allows items without id to exist during lifecycle Fixes 'Failed to delete item' error The delete function was broken by forcing id to be required
52 lines
1.1 KiB
TypeScript
52 lines
1.1 KiB
TypeScript
import Dexie, { Table } from 'dexie';
|
|
|
|
export interface Item {
|
|
id?: number;
|
|
barcode: string;
|
|
name: string;
|
|
category: string;
|
|
part_number?: string;
|
|
color?: string;
|
|
specs?: string;
|
|
quantity: number;
|
|
min_quantity: number;
|
|
image_url?: string;
|
|
box_label?: string;
|
|
labels_data?: string;
|
|
serial_number?: string;
|
|
type?: string;
|
|
description?: string;
|
|
connector?: string;
|
|
size?: string;
|
|
ocr_text?: string;
|
|
photo_path?: string;
|
|
photo_thumbnail_path?: string;
|
|
photo_upload_date?: string;
|
|
}
|
|
|
|
export interface PendingOperation {
|
|
id?: number;
|
|
type: 'CHECK_IN' | 'CHECK_OUT' | 'TRASH';
|
|
barcode: string;
|
|
quantity: number;
|
|
timestamp: number;
|
|
synced: 0 | 1; // 0 for false, 1 for true
|
|
uuid: string;
|
|
details?: string;
|
|
}
|
|
|
|
export class InventoryDatabase extends Dexie {
|
|
items!: Table<Item>;
|
|
pendingOperations!: Table<PendingOperation>;
|
|
|
|
constructor() {
|
|
super('InventoryDatabase');
|
|
this.version(5).stores({
|
|
items: '++id, barcode, name, category, part_number, color, box_label, ocr_text',
|
|
pendingOperations: '++id, barcode, timestamp, synced, uuid'
|
|
});
|
|
}
|
|
}
|
|
|
|
export const db = new InventoryDatabase();
|