@aptly-as/types
Version:
Aptly types and enums
80 lines (79 loc) • 2.59 kB
TypeScript
import { AptlyDocumentSchema } from './document.js';
import { AptlyBaseSchema, AptlyDBCrawlerCleaner, AptlyHistorySchema } from './extends.js';
import { AptlyMediaSrcSchema } from './media.js';
import { AptlyProducerSchema } from './producer.js';
import { AptlyTagSchema } from './tag.js';
export type AptlyProduct = AptlyProductSchema<string, string>;
export interface AptlyProductSchema<ID, DATE> extends AptlyDBCrawlerCleaner, AptlyBaseSchema<ID, DATE>, AptlyHistorySchema<ID, DATE> {
searchableName: string;
organization?: ID;
project?: ID;
base?: boolean;
extends?: ID | AptlyProductSchema<ID, DATE>;
productNumber: string;
itemNumber?: string;
eanNumber?: string;
gtin?: string;
description: string;
images: AptlyProductImageSchema<ID, DATE>[];
variants: AptlyProductVariantSchema<ID, DATE>[];
products?: (ID | AptlyProductSchema<ID, DATE>)[];
url?: string;
color?: string;
colorLabel?: string;
series?: string;
style?: string;
width?: string;
height?: string;
length?: string;
depth?: string;
volume?: string;
circumference?: string;
material?: string;
unitCost?: number;
netCost?: number;
producer?: ID | AptlyProducerSchema<ID, DATE> | null;
supplier?: ID;
tags: (ID | AptlyTagSchema<ID, DATE>)[];
documents: (ID | AptlyDocumentSchema<ID, DATE>)[];
createdBy: ID;
stats?: any;
importID?: ID;
source?: string;
title?: string;
likes: {
user: ID;
date: DATE;
}[];
created: DATE;
}
export type AptlyProductImage = AptlyProductImageSchema<string, string>;
export interface AptlyProductImageSchema<ID, DATE> extends AptlyMediaSrcSchema<ID, DATE> {
image: string;
description?: string;
featured?: boolean;
}
export type AptlyProductVariant = AptlyProductVariantSchema<string, string>;
export interface AptlyProductVariantSchema<ID, DATE> {
_id: ID;
title?: string;
images: AptlyProductImageSchema<ID, DATE>[];
documents: (ID | AptlyDocumentSchema<ID, DATE>)[];
name?: string;
description?: string;
productNumber?: string;
color?: string;
colorLabel?: string;
series?: string;
material?: string;
style?: string;
width?: string;
height?: string;
length?: string;
unitCost?: number;
}
export type AptlyProductImport = AptlyProductImportSchema<string, string>;
export interface AptlyProductImportSchema<ID, DATE> extends Partial<Omit<AptlyProductSchema<ID, DATE>, 'images' | 'documents'>> {
images: string[];
documents: string[];
}