@lomray/microservice-users
Version:
Users microservice based on NodeJS & inverted json.
47 lines (43 loc) • 1.67 kB
JavaScript
;
var tslib = require('tslib');
var microserviceHelpers = require('@lomray/microservice-helpers');
var FilesEvent = require('@lomray/microservices-client-api/constants/events/files');
var typeorm = require('typeorm');
var index = require('../../constants/index.js');
var profile = require('../../entities/profile.js');
/**
* Event handler for FileEntity from files microservice
*
* Listen events: create, update, remove
*
* Update user photo if user file changed
*/
const fileEntityChanged = ({ entity, payload: { eventName } = {}, }) => tslib.__awaiter(void 0, void 0, void 0, function* () {
var _a;
const { entityId: userId, fileId, type, microservice } = entity;
// detect only related with user file entities
if (type !== 'user' || microservice !== index.MS_NAME) {
return false;
}
const repository = typeorm.getRepository(profile);
switch (eventName) {
case FilesEvent.FileEntityCreate:
case FilesEvent.FileEntityUpdate:
const { result } = yield microserviceHelpers.Api.get().files.file.view({
query: { where: { id: fileId } },
});
const photo = (_a = result === null || result === void 0 ? void 0 : result.entity) === null || _a === void 0 ? void 0 : _a.url;
if (!photo) {
return false;
}
yield repository.update({ userId }, { photo });
break;
case FilesEvent.FileEntityRemove:
yield repository.update({ userId }, { photo: null });
break;
default:
return false;
}
return true;
});
module.exports = fileEntityChanged;