diff --git a/server/controllers/bookReference.js b/server/controllers/bookReference.js index 6313821..2950c17 100644 --- a/server/controllers/bookReference.js +++ b/server/controllers/bookReference.js @@ -7,6 +7,30 @@ class BookReferenceController { this.lang = language; } + static formatReferenceSources(reference) { + const referenceSources = Object.keys(reference.sources); + const reformattedSources = referenceSources.map(source => { + const uri = reference.sources[source]; + let link; + switch (source) { + default: + case 'inventaire': { + link = `${Inventaire.url}/entity/${uri}` + break; + } + } + return { + source, + uri, + link, + } + }); + + reference.sources = reformattedSources; + + return reference; + } + async createOrUpdateReference(source, sourceId, skipSearchBySourceCodes = false) { const searchController = new SearchController(this.models); if (!skipSearchBySourceCodes) { diff --git a/server/controllers/search/index.js b/server/controllers/search/index.js index 6726745..7dc891a 100644 --- a/server/controllers/search/index.js +++ b/server/controllers/search/index.js @@ -2,8 +2,8 @@ const fetch = require('node-fetch'); const { Op, fn, col } = require('sequelize'); const BooksController = require('../bookData'); +const BookReferenceController = require('../bookReference'); const { quickSearchInventaire } = require('./Inventaire'); -const Inventaire = require('../bookData/Inventaire'); const defaultSearchOptions = { searchBy: 'name', // A column name in the BookReference model, mainly 'name' or 'description' @@ -58,30 +58,6 @@ class SearchController { }; } - static formatReferenceSources(reference) { - const referenceSources = Object.keys(reference.sources); - const reformattedSources = referenceSources.map(source => { - const uri = reference.sources[source]; - let link; - switch (source) { - default: - case 'inventaire': { - link = `${Inventaire.url}/entity/${uri}` - break; - } - } - return { - source, - uri, - link, - } - }); - - reference.sources = reformattedSources; - - return reference; - } - async search(searchTerm, options = defaultSearchOptions) { const searchBy = options.searchBy.replace('title', 'name').replace('author', 'description'); const { source, language } = options; @@ -116,8 +92,8 @@ class SearchController { ) ); return [ - ...bookReferences.map(match => SearchController.formatReferenceSources(match)), - ...extraReferences.map(match => SearchController.formatReferenceSources(match)), + ...bookReferences.map(match => BookReferenceController.formatReferenceSources(match)), + ...extraReferences.map(match => BookReferenceController.formatReferenceSources(match)), ...searchResults, ]; }