57 lines
1.1 KiB
TypeScript
57 lines
1.1 KiB
TypeScript
export type BuiltInSize = 250 | 355 | 473;
|
|
|
|
export type RedBullEntry = {
|
|
id: string;
|
|
userId: string;
|
|
cans: number;
|
|
flavour: string;
|
|
flavourAccent: string;
|
|
sizeMl: number;
|
|
pricePerCan: number;
|
|
dateTime: string;
|
|
notes?: string;
|
|
store?: string;
|
|
sugarFree: boolean;
|
|
caffeineMgPerCan?: number;
|
|
importKey: string;
|
|
source: "manual" | "quick-add" | "excel" | "json";
|
|
createdAt?: string;
|
|
updatedAt?: string;
|
|
};
|
|
|
|
export type Flavour = {
|
|
name: string;
|
|
accent: string;
|
|
sugarFree?: boolean;
|
|
};
|
|
|
|
export type DateFilter = "all" | "today" | "week" | "month" | "custom";
|
|
|
|
export type EntryDraft = Omit<
|
|
RedBullEntry,
|
|
"id" | "userId" | "importKey" | "source" | "createdAt" | "updatedAt"
|
|
> & {
|
|
source?: RedBullEntry["source"];
|
|
};
|
|
|
|
export type Filters = {
|
|
flavour: string;
|
|
dateRange: DateFilter;
|
|
store: string;
|
|
from: string;
|
|
to: string;
|
|
};
|
|
|
|
export type ImportPreviewRow = {
|
|
rowNumber: number;
|
|
entry?: EntryDraft;
|
|
errors: string[];
|
|
duplicate: boolean;
|
|
duplicateReason?: string;
|
|
};
|
|
|
|
export type ImportPreview = {
|
|
fileName: string;
|
|
rows: ImportPreviewRow[];
|
|
};
|