@shopware-ag/meteor-admin-sdk
Version:
The Meteor SDK for the Shopware Administration.
69 lines • 2.62 kB
JavaScript
import { send } from '../channel';
// eslint-disable-next-line @typescript-eslint/explicit-function-return-type
export default (entityName) => ({
search: (criteria, context) => {
return send('repositorySearch', { entityName, context, criteria });
},
get: (id, context, criteria) => {
// eslint-disable-next-line @typescript-eslint/no-unsafe-return
return send('repositoryGet', { entityName, id, context, criteria });
},
save: (entity, context) => {
return send('repositorySave', { entityName, entity, context });
},
// eslint-disable-next-line @typescript-eslint/no-explicit-any
clone: (entityId, contextOrBehavior, behaviorOrContext) => {
let context;
// eslint-disable-next-line @typescript-eslint/no-explicit-any
let behavior;
if (isApiContext(contextOrBehavior)) {
context = contextOrBehavior;
// eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
behavior = behaviorOrContext;
}
else if (isApiContext(behaviorOrContext)) {
context = behaviorOrContext;
// eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
behavior = contextOrBehavior;
}
else {
throw new Error('Invalid arguments for clone method');
}
// eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
return send('repositoryClone', { entityName, entityId, context, behavior });
},
hasChanges: (entity) => {
return send('repositoryHasChanges', { entityName, entity });
},
saveAll: (entities, context) => {
return send('repositorySaveAll', { entityName, entities, context });
},
delete: (entityId, context) => {
return send('repositoryDelete', { entityName, entityId, context });
},
create: (context, entityId) => {
// eslint-disable-next-line @typescript-eslint/no-unsafe-return
return send('repositoryCreate', { entityName, entityId, context });
},
});
function isApiContext(value) {
const listOfApiContextProperties = [
'apiPath',
'apiResourcePath',
'assetsPath',
'authToken',
'basePath',
'pathInfo',
'inheritance',
'installationPath',
'languageId',
'language',
'apiVersion',
'liveVersionId',
'systemLanguageId',
];
return (!!value &&
typeof value === 'object' &&
listOfApiContextProperties.some(propertyKey => propertyKey in value));
}
//# sourceMappingURL=repository.js.map