feat(meal-plan): add servings field to MealPlanEntry and update related functionality
feat(products): implement bulk update for product categories feat(recipes): add servings input to WriteRecipePage and update MealPlanClient for servings management refactor(types): enhance Product and Category types with additional properties
This commit is contained in:
@@ -0,0 +1,12 @@
|
||||
import { IsArray, IsInt, IsNumber, IsOptional, ArrayMinSize } from 'class-validator';
|
||||
|
||||
export class BulkUpdateProductsDto {
|
||||
@IsArray()
|
||||
@ArrayMinSize(1)
|
||||
@IsInt({ each: true })
|
||||
ids: number[];
|
||||
|
||||
@IsOptional()
|
||||
@IsNumber()
|
||||
categoryId?: number | null;
|
||||
}
|
||||
@@ -17,7 +17,7 @@ import { ProductsService } from './products.service';
|
||||
import { MergeProductsDto } from './dto/merge-products.dto';
|
||||
import { UpdateCanonicalNameDto } from './dto/update-canonical-name.dto';
|
||||
import { SetTagsDto } from './dto/set-tags.dto';
|
||||
import { UpsertNutritionDto } from './dto/upsert-nutrition.dto';
|
||||
import { BulkUpdateProductsDto } from './dto/bulk-update-products.dto';
|
||||
|
||||
@Controller('products')
|
||||
export class ProductsController {
|
||||
@@ -116,4 +116,10 @@ export class ProductsController {
|
||||
resetAll() {
|
||||
return this.productsService.resetAll();
|
||||
}
|
||||
|
||||
@Post('bulk-update')
|
||||
@HttpCode(200)
|
||||
bulkUpdate(@Body() body: BulkUpdateProductsDto) {
|
||||
return this.productsService.bulkUpdate(body.ids, { categoryId: body.categoryId });
|
||||
}
|
||||
}
|
||||
@@ -397,4 +397,14 @@ export class ProductsService {
|
||||
]);
|
||||
return { ok: true };
|
||||
}
|
||||
|
||||
async bulkUpdate(ids: number[], data: { categoryId?: number | null }) {
|
||||
const updateData: Record<string, any> = {};
|
||||
if ('categoryId' in data) {
|
||||
updateData.categoryId = data.categoryId;
|
||||
}
|
||||
if (Object.keys(updateData).length === 0) return { updated: 0 };
|
||||
await this.prisma.product.updateMany({ where: { id: { in: ids } }, data: updateData });
|
||||
return { updated: ids.length };
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user