UNPKG

integreat

Version:
42 lines 1.78 kB
import debugLib from 'debug'; import { createErrorResponse } from '../utils/response.js'; import setHandler from './set.js'; import { generateMetaId } from './getMeta.js'; const debug = debugLib('great'); export default async function setMeta(action, resources) { const { payload: { type, meta = {}, metaKey, targetService: serviceId, endpoint: endpointId, }, } = action; const metaId = generateMetaId(serviceId, type, metaKey); const { getService } = resources; const service = getService(undefined, serviceId); if (!service) { debug(`SET_META: Service '${serviceId}' doesn't exist`); return createErrorResponse(`Service '${serviceId}' doesn't exist`, 'handler:SET_META'); } const metaType = service.meta; const metaService = getService(metaType); if (!metaService) { debug(`SET_META: Service '${service.id}' doesn't support metadata (setting was '${service.meta}')`); return createErrorResponse(`Service '${service.id}' doesn't support metadata (setting was '${service.meta}')`, 'handler:SET_META', 'noaction'); } const endpointDebug = endpointId ? `endpoint '${endpointId}'` : `endpoint matching ${metaType} and ${metaId}`; debug("SET_META: Send metadata %o for service '%s' on service '%s' %s", meta, service.id, metaService.id, endpointDebug); const setAction = { ...action, type: 'SET', payload: { id: metaId, type: metaType, data: { id: metaId, $type: metaType, ...meta, }, keys: Object.keys(meta), endpoint: endpointId, }, }; return await setHandler(setAction, resources); } //# sourceMappingURL=setMeta.js.map