diff --git a/backend/controllers/vocabController.js b/backend/controllers/vocabController.js index 6b2c666..5af80b0 100644 --- a/backend/controllers/vocabController.js +++ b/backend/controllers/vocabController.js @@ -9,6 +9,7 @@ class VocabController { this.service = new VocabService(); this.listLanguages = this._wrapWithUser((userId) => this.service.listLanguages(userId)); + this.listAllLanguages = this._wrapWithUser(() => this.service.listAllLanguages()); this.createLanguage = this._wrapWithUser((userId, req) => this.service.createLanguage(userId, req.body), { successStatus: 201 }); this.subscribe = this._wrapWithUser((userId, req) => this.service.subscribeByShareCode(userId, req.body), { successStatus: 201 }); this.getLanguage = this._wrapWithUser((userId, req) => this.service.getLanguage(userId, req.params.languageId)); diff --git a/backend/routers/vocabRouter.js b/backend/routers/vocabRouter.js index ac4b4e6..bbc6d5f 100644 --- a/backend/routers/vocabRouter.js +++ b/backend/routers/vocabRouter.js @@ -8,6 +8,7 @@ const vocabController = new VocabController(); router.use(authenticate); router.get('/languages', vocabController.listLanguages); +router.get('/languages/all', vocabController.listAllLanguages); router.post('/languages', vocabController.createLanguage); router.post('/subscribe', vocabController.subscribe); router.get('/languages/:languageId', vocabController.getLanguage); diff --git a/backend/services/vocabService.js b/backend/services/vocabService.js index 52c8ceb..8e65f8b 100644 --- a/backend/services/vocabService.js +++ b/backend/services/vocabService.js @@ -147,6 +147,24 @@ export default class VocabService { return { languages: rows }; } + async listAllLanguages() { + // Gibt alle verfügbaren Sprachen zurück (für Kursliste) + const rows = await sequelize.query( + ` + SELECT + id, + name + FROM community.vocab_language + ORDER BY name ASC + `, + { + type: sequelize.QueryTypes.SELECT, + } + ); + + return { languages: rows }; + } + async listLanguagesForMenu(userId) { // userId ist die numerische community.user.id const rows = await sequelize.query( diff --git a/frontend/src/views/social/VocabCourseListView.vue b/frontend/src/views/social/VocabCourseListView.vue index e90b883..34297c5 100644 --- a/frontend/src/views/social/VocabCourseListView.vue +++ b/frontend/src/views/social/VocabCourseListView.vue @@ -165,7 +165,8 @@ export default { methods: { async loadLanguages() { try { - const res = await apiClient.get('/api/vocab/languages'); + // Verwende /languages/all für die Kursliste, um alle Sprachen anzuzeigen + const res = await apiClient.get('/api/vocab/languages/all'); this.languages = res.data?.languages || []; // Lade die Muttersprache des Benutzers