28 lines
1.0 KiB
JavaScript
28 lines
1.0 KiB
JavaScript
import { savedViewSchema } from '@pokemon-inventory/validation/saved-view';
|
|
|
|
import { createApplicationError } from '../../../shared/errors/application-error.js';
|
|
|
|
export function createSavedViewService({ savedViewRepository }) {
|
|
return {
|
|
async list({ sellerId }) {
|
|
return savedViewRepository.listBySellerId(sellerId);
|
|
},
|
|
|
|
async create({ sellerId, view }) {
|
|
return savedViewRepository.create(sellerId, savedViewSchema.parse(view));
|
|
},
|
|
|
|
async update({ sellerId, viewId, view }) {
|
|
const updated = await savedViewRepository.updateForSeller(viewId, sellerId, savedViewSchema.parse(view));
|
|
if (!updated) throw createApplicationError('SAVED_VIEW_NOT_FOUND', 'Saved view was not found.', 404);
|
|
return updated;
|
|
},
|
|
|
|
async delete({ sellerId, viewId }) {
|
|
const deleted = await savedViewRepository.deleteForSeller(viewId, sellerId);
|
|
if (!deleted) throw createApplicationError('SAVED_VIEW_NOT_FOUND', 'Saved view was not found.', 404);
|
|
return deleted;
|
|
},
|
|
};
|
|
}
|