diff --git a/backend/services/vocabService.js b/backend/services/vocabService.js index 4a2fcb9..e9d5229 100644 --- a/backend/services/vocabService.js +++ b/backend/services/vocabService.js @@ -408,20 +408,23 @@ export default class VocabService { return { languageId: access.id, isOwner: access.isOwner, vocabs: rows }; } - async searchVocabs(hashedUserId, languageId, { learning = '', motherTongue = '' } = {}) { + async searchVocabs(hashedUserId, languageId, { q = '', learning = '', motherTongue = '' } = {}) { const user = await this._getUserByHashedId(hashedUserId); const access = await this._getLanguageAccess(user.id, languageId); + const query = typeof q === 'string' ? q.trim() : ''; + // Abwärtskompatibel: falls alte Parameter genutzt werden, zusammenfassen const learningTerm = typeof learning === 'string' ? learning.trim() : ''; const motherTerm = typeof motherTongue === 'string' ? motherTongue.trim() : ''; - if (!learningTerm && !motherTerm) { + const effective = query || learningTerm || motherTerm; + + if (!effective) { const err = new Error('Missing search term'); err.status = 400; throw err; } - const learningLike = learningTerm ? `%${learningTerm}%` : null; - const motherLike = motherTerm ? `%${motherTerm}%` : null; + const like = `%${effective}%`; const rows = await sequelize.query( ` @@ -436,16 +439,14 @@ export default class VocabService { JOIN community.vocab_lexeme l1 ON l1.id = cl.learning_lexeme_id JOIN community.vocab_lexeme l2 ON l2.id = cl.reference_lexeme_id WHERE c.language_id = :languageId - AND (:learningLike IS NULL OR l1.text ILIKE :learningLike) - AND (:motherLike IS NULL OR l2.text ILIKE :motherLike) + AND (l1.text ILIKE :like OR l2.text ILIKE :like) ORDER BY l2.text ASC, l1.text ASC, c.title ASC LIMIT 200 `, { replacements: { languageId: access.id, - learningLike, - motherLike, + like, }, type: sequelize.QueryTypes.SELECT, } diff --git a/frontend/src/dialogues/socialnetwork/VocabSearchDialog.vue b/frontend/src/dialogues/socialnetwork/VocabSearchDialog.vue index 6383b83..23e264c 100644 --- a/frontend/src/dialogues/socialnetwork/VocabSearchDialog.vue +++ b/frontend/src/dialogues/socialnetwork/VocabSearchDialog.vue @@ -16,14 +16,10 @@