Add endpoint to retrieve all available languages in VocabController and VocabRouter
- Introduced a new method in VocabService to list all languages from the database. - Updated VocabController to wrap the new method for user access. - Added a new route in VocabRouter to handle requests for all languages. - Modified VocabCourseListView to utilize the new endpoint for loading languages, enhancing the course selection experience.
This commit is contained in:
@@ -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));
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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(
|
||||
|
||||
Reference in New Issue
Block a user