diff --git a/src/server/routes/entity/publisher.js b/src/server/routes/entity/publisher.js index c32775676..bdff3b8a4 100644 --- a/src/server/routes/entity/publisher.js +++ b/src/server/routes/entity/publisher.js @@ -190,7 +190,7 @@ function _setPublisherTitle(res) { } -router.get('/:bbid', middleware.loadEntityRelationships, middleware.loadWikipediaExtract, (req, res, next) => { +router.get('/:bbid', middleware.loadEntityRelationships, middleware.loadWikipediaExtract, async (req, res, next) => { // Fetch editions const {Publisher} = req.app.locals.orm; const editionRelationsToFetch = [ @@ -201,18 +201,12 @@ router.get('/:bbid', middleware.loadEntityRelationships, middleware.loadWikipedi 'editionFormat', 'authorCredit.names' ]; - const editionsPromise = - Publisher.forge({bbid: res.locals.entity.bbid}) - .editions({withRelated: editionRelationsToFetch}); - - return editionsPromise - .then((editions) => { - res.locals.entity.editions = editions.toJSON(); - _setPublisherTitle(res); - res.locals.entity.editions.sort(entityRoutes.compareEntitiesByDate); - return entityRoutes.displayEntity(req, res); - }) - .catch(next); + const editions = await Publisher.forge({bbid: res.locals.entity.bbid}) + .editions({withRelated: editionRelationsToFetch}); + res.locals.entity.editions = editions.toJSON(); + _setPublisherTitle(res); + res.locals.entity.editions.sort(entityRoutes.compareEntitiesByDate); + await entityRoutes.displayEntity(req, res); }); router.get('/:bbid/delete', auth.isAuthenticated, (req, res, next) => { diff --git a/src/server/routes/entity/work.js b/src/server/routes/entity/work.js index c2dbcd0e9..d3efc6784 100644 --- a/src/server/routes/entity/work.js +++ b/src/server/routes/entity/work.js @@ -92,37 +92,45 @@ router.get( '/create', auth.isAuthenticated, middleware.loadIdentifierTypes, middleware.loadLanguages, middleware.loadWorkTypes, middleware.loadRelationshipTypes, - (req, res, next) => { + async (req, res, next) => { const {Author, Edition} = req.app.locals.orm; let relationshipTypeId; let initialRelationshipIndex = 0; - const propsPromise = generateEntityProps( + const propsPromise = await generateEntityProps( 'work', req, res, {} ); if (req.query.author) { - propsPromise.author = - Author.forge({bbid: req.query.author}) - .fetch({require: false, withRelated: 'defaultAlias'}) - .then((data) => data && utils.entityToOption(data.toJSON())); + try { + const data = await Author.forge({bbid: req.query.author}) + .fetch({require: false, withRelated: 'defaultAlias'}); + propsPromise.author = data && utils.entityToOption(data.toJSON()); + } + catch (err) { + log.debug(err); + } } if (req.query.edition) { - propsPromise.edition = - Edition.forge({bbid: req.query.edition}) - .fetch({require: false, withRelated: 'defaultAlias'}) - .then((data) => data && utils.entityToOption(data.toJSON())); + try { + const data = await Edition.forge({bbid: req.query.edition}) + .fetch({require: false, withRelated: 'defaultAlias'}); + propsPromise.edition = data && utils.entityToOption(data.toJSON()); + } + catch (err) { + log.debug(err); + } } async function render(props) { if (props.author) { - // add initial ralationship with relationshipTypeId = 8 ( is written by ) + // add initial relationship with relationshipTypeId = 8 ( is written by ) relationshipTypeId = RelationshipTypes.AuthorWroteWork; addInitialRelationship(props, relationshipTypeId, initialRelationshipIndex++, props.author); } if (props.edition) { - // add initial ralationship with relationshipTypeId = 10 ( is contained in ) + // add initial relationship with relationshipTypeId = 10 ( is contained in ) relationshipTypeId = RelationshipTypes.EditionContainsWork; addInitialRelationship(props, relationshipTypeId, initialRelationshipIndex++, props.edition); } @@ -155,44 +163,47 @@ router.get( title: props.heading })); } - makePromiseFromObject(propsPromise) - .then(render) - .catch(next); + try { + const props = await makePromiseFromObject(propsPromise); + await render(props); + } + catch (err) { + log.debug(err); + } } ); + router.post( '/create', entityRoutes.displayPreview, auth.isAuthenticatedForHandler, middleware.loadIdentifierTypes, middleware.loadLanguages, middleware.loadWorkTypes, middleware.loadRelationshipTypes, async (req, res, next) => { const {WorkType} = req.app.locals.orm; - const entity = await utils.parseInitialState(req, 'work'); - if (entity.workSection?.type) { - entity.workSection.type = await utils.getIdByField(WorkType, 'label', entity.workSection.type); - } - if (entity.workSection) { - entity.workSection = await utils.parseLanguages(entity.workSection, req.app.locals.orm); - } - const propsPromise = generateEntityProps( - 'work', req, res, {}, () => entity - ); - - function render(props) { + try { + const entity = await utils.parseInitialState(req, 'work'); + if (entity.workSection?.type) { + entity.workSection.type = await utils.getIdByField(WorkType, 'label', entity.workSection.type); + } + if (entity.workSection) { + entity.workSection = await utils.parseLanguages(entity.workSection, req.app.locals.orm); + } + const props = await generateEntityProps( + 'work', req, res, {}, () => entity + ); const editorMarkup = entityEditorMarkup(props); const {markup} = editorMarkup; const updatedProps = editorMarkup.props; - - return res.send(target({ + res.send(target({ markup, props: escapeProps(updatedProps), script: '/js/entity-editor.js', title: props.heading })); } - makePromiseFromObject(propsPromise) - .then(render) - .catch(next); + catch (err) { + log.debug(err); + } } );