mirror of
https://github.com/mealie-recipes/mealie.git
synced 2025-07-23 07:09:41 +02:00
feat: ✨ add bulk actions service and routes (WIP) (#747)
* feat(frontend): ✨ Group level recipe data management * feat(backend): ✨ add bulk actions service and routes Co-authored-by: Hayden <hay-kot@pm.me>
This commit is contained in:
parent
3b920babe3
commit
4e70c96f8a
13 changed files with 703 additions and 12 deletions
59
frontend/api/class-interfaces/recipe-bulk-actions.ts
Normal file
59
frontend/api/class-interfaces/recipe-bulk-actions.ts
Normal file
|
@ -0,0 +1,59 @@
|
|||
import { BaseAPI } from "./_base";
|
||||
|
||||
interface BasePayload {
|
||||
recipes: string[];
|
||||
}
|
||||
|
||||
type exportType = "json";
|
||||
|
||||
interface RecipeBulkDelete extends BasePayload {}
|
||||
|
||||
interface RecipeBulkExport extends BasePayload {
|
||||
exportType: exportType;
|
||||
}
|
||||
|
||||
interface RecipeBulkCategorize extends BasePayload {
|
||||
categories: string[];
|
||||
}
|
||||
|
||||
interface RecipeBulkTag extends BasePayload {
|
||||
tags: string[];
|
||||
}
|
||||
|
||||
interface BulkActionError {
|
||||
recipe: string;
|
||||
error: string;
|
||||
}
|
||||
|
||||
interface BulkActionResponse {
|
||||
success: boolean;
|
||||
message: string;
|
||||
errors: BulkActionError[];
|
||||
}
|
||||
|
||||
const prefix = "/api";
|
||||
|
||||
const routes = {
|
||||
bulkExport: prefix + "/recipes/bulk-actions/export",
|
||||
bulkCategorize: prefix + "/recipes/bulk-actions/categorize",
|
||||
bulkTag: prefix + "/recipes/bulk-actions/tag",
|
||||
bulkDelete: prefix + "/recipes/bulk-actions/delete",
|
||||
};
|
||||
|
||||
export class BulkActionsAPI extends BaseAPI {
|
||||
async bulkExport(payload: RecipeBulkExport) {
|
||||
return await this.requests.post<BulkActionResponse>(routes.bulkExport, payload);
|
||||
}
|
||||
|
||||
async bulkCategorize(payload: RecipeBulkCategorize) {
|
||||
return await this.requests.post<BulkActionResponse>(routes.bulkCategorize, payload);
|
||||
}
|
||||
|
||||
async bulkTag(payload: RecipeBulkTag) {
|
||||
return await this.requests.post<BulkActionResponse>(routes.bulkTag, payload);
|
||||
}
|
||||
|
||||
async bulkDelete(payload: RecipeBulkDelete) {
|
||||
return await this.requests.post<BulkActionResponse>(routes.bulkDelete, payload);
|
||||
}
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue