Refactor code structure for improved readability and maintainability
Test Suite / test (24.15.0) (push) Has been cancelled
Test Suite / test (24.15.0) (push) Has been cancelled
This commit is contained in:
+458
@@ -0,0 +1,458 @@
|
||||
import { PrismaService } from '../prisma/prisma.service';
|
||||
import { CreateProductDto } from './dto/create-product.dto';
|
||||
import { UpdateProductDto } from './dto/update-product.dto';
|
||||
import { UpsertNutritionDto } from './dto/upsert-nutrition.dto';
|
||||
import { AiService } from '../ai/ai.service';
|
||||
import { CategoriesService } from '../categories/categories.service';
|
||||
export declare class ProductsService {
|
||||
private readonly prisma;
|
||||
private readonly aiService;
|
||||
private readonly categoriesService;
|
||||
constructor(prisma: PrismaService, aiService: AiService, categoriesService: CategoriesService);
|
||||
findAll(filters?: {
|
||||
tag?: string;
|
||||
}): Promise<({
|
||||
nutrition: {
|
||||
calories: number | null;
|
||||
protein: number | null;
|
||||
fat: number | null;
|
||||
carbohydrates: number | null;
|
||||
salt: number | null;
|
||||
sugar: number | null;
|
||||
fiber: number | null;
|
||||
id: number;
|
||||
productId: number;
|
||||
} | null;
|
||||
tags: ({
|
||||
tag: {
|
||||
name: string;
|
||||
id: number;
|
||||
};
|
||||
} & {
|
||||
productId: number;
|
||||
tagId: number;
|
||||
})[];
|
||||
categoryRef: ({
|
||||
parent: ({
|
||||
parent: {
|
||||
name: string;
|
||||
id: number;
|
||||
parentId: number | null;
|
||||
} | null;
|
||||
} & {
|
||||
name: string;
|
||||
id: number;
|
||||
parentId: number | null;
|
||||
}) | null;
|
||||
} & {
|
||||
name: string;
|
||||
id: number;
|
||||
parentId: number | null;
|
||||
}) | null;
|
||||
} & {
|
||||
category: string | null;
|
||||
status: string;
|
||||
name: string;
|
||||
categoryId: number | null;
|
||||
canonicalName: string | null;
|
||||
id: number;
|
||||
normalizedName: string;
|
||||
isActive: boolean;
|
||||
deletedAt: Date | null;
|
||||
createdAt: Date;
|
||||
updatedAt: Date;
|
||||
ownerId: number;
|
||||
isPrivate: boolean;
|
||||
})[]>;
|
||||
findByOwner(userId: number): Promise<{
|
||||
name: string;
|
||||
categoryId: number | null;
|
||||
canonicalName: string | null;
|
||||
id: number;
|
||||
}[]>;
|
||||
createPrivate(data: CreateProductDto, userId: number): Promise<{
|
||||
category: string | null;
|
||||
status: string;
|
||||
name: string;
|
||||
categoryId: number | null;
|
||||
canonicalName: string | null;
|
||||
id: number;
|
||||
normalizedName: string;
|
||||
isActive: boolean;
|
||||
deletedAt: Date | null;
|
||||
createdAt: Date;
|
||||
updatedAt: Date;
|
||||
ownerId: number;
|
||||
isPrivate: boolean;
|
||||
}>;
|
||||
findDuplicateCandidates(): Promise<{
|
||||
normalizedName: string;
|
||||
count: number;
|
||||
products: {
|
||||
category: string | null;
|
||||
status: string;
|
||||
name: string;
|
||||
categoryId: number | null;
|
||||
canonicalName: string | null;
|
||||
id: number;
|
||||
normalizedName: string;
|
||||
isActive: boolean;
|
||||
deletedAt: Date | null;
|
||||
createdAt: Date;
|
||||
updatedAt: Date;
|
||||
ownerId: number;
|
||||
isPrivate: boolean;
|
||||
}[];
|
||||
}[]>;
|
||||
findOne(id: number): Promise<{
|
||||
category: string | null;
|
||||
status: string;
|
||||
name: string;
|
||||
categoryId: number | null;
|
||||
canonicalName: string | null;
|
||||
id: number;
|
||||
normalizedName: string;
|
||||
isActive: boolean;
|
||||
deletedAt: Date | null;
|
||||
createdAt: Date;
|
||||
updatedAt: Date;
|
||||
ownerId: number;
|
||||
isPrivate: boolean;
|
||||
}>;
|
||||
create(data: CreateProductDto, ownerId?: number): Promise<{
|
||||
category: string | null;
|
||||
status: string;
|
||||
name: string;
|
||||
categoryId: number | null;
|
||||
canonicalName: string | null;
|
||||
id: number;
|
||||
normalizedName: string;
|
||||
isActive: boolean;
|
||||
deletedAt: Date | null;
|
||||
createdAt: Date;
|
||||
updatedAt: Date;
|
||||
ownerId: number;
|
||||
isPrivate: boolean;
|
||||
}>;
|
||||
update(id: number, data: UpdateProductDto): Promise<{
|
||||
nutrition: {
|
||||
calories: number | null;
|
||||
protein: number | null;
|
||||
fat: number | null;
|
||||
carbohydrates: number | null;
|
||||
salt: number | null;
|
||||
sugar: number | null;
|
||||
fiber: number | null;
|
||||
id: number;
|
||||
productId: number;
|
||||
} | null;
|
||||
tags: ({
|
||||
tag: {
|
||||
name: string;
|
||||
id: number;
|
||||
};
|
||||
} & {
|
||||
productId: number;
|
||||
tagId: number;
|
||||
})[];
|
||||
} & {
|
||||
category: string | null;
|
||||
status: string;
|
||||
name: string;
|
||||
categoryId: number | null;
|
||||
canonicalName: string | null;
|
||||
id: number;
|
||||
normalizedName: string;
|
||||
isActive: boolean;
|
||||
deletedAt: Date | null;
|
||||
createdAt: Date;
|
||||
updatedAt: Date;
|
||||
ownerId: number;
|
||||
isPrivate: boolean;
|
||||
}>;
|
||||
updateCanonicalName(id: number, canonicalName: string): Promise<{
|
||||
category: string | null;
|
||||
status: string;
|
||||
name: string;
|
||||
categoryId: number | null;
|
||||
canonicalName: string | null;
|
||||
id: number;
|
||||
normalizedName: string;
|
||||
isActive: boolean;
|
||||
deletedAt: Date | null;
|
||||
createdAt: Date;
|
||||
updatedAt: Date;
|
||||
ownerId: number;
|
||||
isPrivate: boolean;
|
||||
}>;
|
||||
findDeleted(): Promise<{
|
||||
category: string | null;
|
||||
status: string;
|
||||
name: string;
|
||||
categoryId: number | null;
|
||||
canonicalName: string | null;
|
||||
id: number;
|
||||
normalizedName: string;
|
||||
isActive: boolean;
|
||||
deletedAt: Date | null;
|
||||
createdAt: Date;
|
||||
updatedAt: Date;
|
||||
ownerId: number;
|
||||
isPrivate: boolean;
|
||||
}[]>;
|
||||
remove(id: number): Promise<{
|
||||
category: string | null;
|
||||
status: string;
|
||||
name: string;
|
||||
categoryId: number | null;
|
||||
canonicalName: string | null;
|
||||
id: number;
|
||||
normalizedName: string;
|
||||
isActive: boolean;
|
||||
deletedAt: Date | null;
|
||||
createdAt: Date;
|
||||
updatedAt: Date;
|
||||
ownerId: number;
|
||||
isPrivate: boolean;
|
||||
}>;
|
||||
permanentDelete(id: number): Promise<{
|
||||
category: string | null;
|
||||
status: string;
|
||||
name: string;
|
||||
categoryId: number | null;
|
||||
canonicalName: string | null;
|
||||
id: number;
|
||||
normalizedName: string;
|
||||
isActive: boolean;
|
||||
deletedAt: Date | null;
|
||||
createdAt: Date;
|
||||
updatedAt: Date;
|
||||
ownerId: number;
|
||||
isPrivate: boolean;
|
||||
}>;
|
||||
restore(id: number): Promise<{
|
||||
category: string | null;
|
||||
status: string;
|
||||
name: string;
|
||||
categoryId: number | null;
|
||||
canonicalName: string | null;
|
||||
id: number;
|
||||
normalizedName: string;
|
||||
isActive: boolean;
|
||||
deletedAt: Date | null;
|
||||
createdAt: Date;
|
||||
updatedAt: Date;
|
||||
ownerId: number;
|
||||
isPrivate: boolean;
|
||||
}>;
|
||||
private findProductByIdOrThrow;
|
||||
merge(sourceProductId: number, targetProductId: number): Promise<{
|
||||
message: string;
|
||||
sourceProductId: number;
|
||||
targetProductId: number;
|
||||
movedInventoryCount: number;
|
||||
softDeletedSource: {
|
||||
category: string | null;
|
||||
status: string;
|
||||
name: string;
|
||||
categoryId: number | null;
|
||||
canonicalName: string | null;
|
||||
id: number;
|
||||
normalizedName: string;
|
||||
isActive: boolean;
|
||||
deletedAt: Date | null;
|
||||
createdAt: Date;
|
||||
updatedAt: Date;
|
||||
ownerId: number;
|
||||
isPrivate: boolean;
|
||||
};
|
||||
}>;
|
||||
previewMerge(sourceProductId: number, targetProductId: number): Promise<{
|
||||
source: {
|
||||
inventoryCount: number;
|
||||
category: string | null;
|
||||
status: string;
|
||||
name: string;
|
||||
categoryId: number | null;
|
||||
canonicalName: string | null;
|
||||
id: number;
|
||||
normalizedName: string;
|
||||
isActive: boolean;
|
||||
deletedAt: Date | null;
|
||||
createdAt: Date;
|
||||
updatedAt: Date;
|
||||
ownerId: number;
|
||||
isPrivate: boolean;
|
||||
};
|
||||
target: {
|
||||
inventoryCount: number;
|
||||
category: string | null;
|
||||
status: string;
|
||||
name: string;
|
||||
categoryId: number | null;
|
||||
canonicalName: string | null;
|
||||
id: number;
|
||||
normalizedName: string;
|
||||
isActive: boolean;
|
||||
deletedAt: Date | null;
|
||||
createdAt: Date;
|
||||
updatedAt: Date;
|
||||
ownerId: number;
|
||||
isPrivate: boolean;
|
||||
};
|
||||
outcome: {
|
||||
inventoryItemsToMove: number;
|
||||
sourceWillBeSoftDeleted: boolean;
|
||||
targetWillRemainActive: boolean;
|
||||
};
|
||||
}>;
|
||||
backfillCanonicalNames(): Promise<{
|
||||
message: string;
|
||||
updatedCount: number;
|
||||
products: {
|
||||
category: string | null;
|
||||
status: string;
|
||||
name: string;
|
||||
categoryId: number | null;
|
||||
canonicalName: string | null;
|
||||
id: number;
|
||||
normalizedName: string;
|
||||
isActive: boolean;
|
||||
deletedAt: Date | null;
|
||||
createdAt: Date;
|
||||
updatedAt: Date;
|
||||
ownerId: number;
|
||||
isPrivate: boolean;
|
||||
}[];
|
||||
}>;
|
||||
setTags(productId: number, tagNames: string[]): Promise<({
|
||||
nutrition: {
|
||||
calories: number | null;
|
||||
protein: number | null;
|
||||
fat: number | null;
|
||||
carbohydrates: number | null;
|
||||
salt: number | null;
|
||||
sugar: number | null;
|
||||
fiber: number | null;
|
||||
id: number;
|
||||
productId: number;
|
||||
} | null;
|
||||
tags: ({
|
||||
tag: {
|
||||
name: string;
|
||||
id: number;
|
||||
};
|
||||
} & {
|
||||
productId: number;
|
||||
tagId: number;
|
||||
})[];
|
||||
} & {
|
||||
category: string | null;
|
||||
status: string;
|
||||
name: string;
|
||||
categoryId: number | null;
|
||||
canonicalName: string | null;
|
||||
id: number;
|
||||
normalizedName: string;
|
||||
isActive: boolean;
|
||||
deletedAt: Date | null;
|
||||
createdAt: Date;
|
||||
updatedAt: Date;
|
||||
ownerId: number;
|
||||
isPrivate: boolean;
|
||||
}) | null>;
|
||||
upsertNutrition(productId: number, data: UpsertNutritionDto): Promise<{
|
||||
calories: number | null;
|
||||
protein: number | null;
|
||||
fat: number | null;
|
||||
carbohydrates: number | null;
|
||||
salt: number | null;
|
||||
sugar: number | null;
|
||||
fiber: number | null;
|
||||
id: number;
|
||||
productId: number;
|
||||
}>;
|
||||
findAllTags(): Promise<{
|
||||
name: string;
|
||||
id: number;
|
||||
}[]>;
|
||||
resetAll(): Promise<{
|
||||
ok: boolean;
|
||||
}>;
|
||||
bulkUpdate(ids: number[], data: {
|
||||
categoryId?: number | null;
|
||||
}): Promise<{
|
||||
updated: number;
|
||||
}>;
|
||||
findUncategorized(): Promise<{
|
||||
id: number;
|
||||
name: string;
|
||||
canonicalName: string | null;
|
||||
}[]>;
|
||||
aiCategorizeBulk(productIds?: number[]): Promise<{
|
||||
productId: number;
|
||||
productName: string;
|
||||
suggestion: object;
|
||||
}[]>;
|
||||
findPending(): Promise<({
|
||||
owner: {
|
||||
id: number;
|
||||
username: string;
|
||||
};
|
||||
categoryRef: ({
|
||||
parent: {
|
||||
name: string;
|
||||
id: number;
|
||||
parentId: number | null;
|
||||
} | null;
|
||||
} & {
|
||||
name: string;
|
||||
id: number;
|
||||
parentId: number | null;
|
||||
}) | null;
|
||||
} & {
|
||||
category: string | null;
|
||||
status: string;
|
||||
name: string;
|
||||
categoryId: number | null;
|
||||
canonicalName: string | null;
|
||||
id: number;
|
||||
normalizedName: string;
|
||||
isActive: boolean;
|
||||
deletedAt: Date | null;
|
||||
createdAt: Date;
|
||||
updatedAt: Date;
|
||||
ownerId: number;
|
||||
isPrivate: boolean;
|
||||
})[]>;
|
||||
createPending(data: CreateProductDto, userId: number): Promise<{
|
||||
category: string | null;
|
||||
status: string;
|
||||
name: string;
|
||||
categoryId: number | null;
|
||||
canonicalName: string | null;
|
||||
id: number;
|
||||
normalizedName: string;
|
||||
isActive: boolean;
|
||||
deletedAt: Date | null;
|
||||
createdAt: Date;
|
||||
updatedAt: Date;
|
||||
ownerId: number;
|
||||
isPrivate: boolean;
|
||||
}>;
|
||||
setStatus(id: number, status: string): import(".prisma/client").Prisma.Prisma__ProductClient<{
|
||||
category: string | null;
|
||||
status: string;
|
||||
name: string;
|
||||
categoryId: number | null;
|
||||
canonicalName: string | null;
|
||||
id: number;
|
||||
normalizedName: string;
|
||||
isActive: boolean;
|
||||
deletedAt: Date | null;
|
||||
createdAt: Date;
|
||||
updatedAt: Date;
|
||||
ownerId: number;
|
||||
isPrivate: boolean;
|
||||
}, never, import("@prisma/client/runtime/library").DefaultArgs, import(".prisma/client").Prisma.PrismaClientOptions>;
|
||||
}
|
||||
Reference in New Issue
Block a user