Fügt Unterstützung für vordefinierte Aktivitäten hinzu, einschließlich der Möglichkeit, Bilder hochzuladen und zu suchen. Aktualisiert die Datenbankmodelle und -routen entsprechend. Verbessert die Benutzeroberfläche zur Anzeige und Bearbeitung von Aktivitäten in DiaryView.vue.

This commit is contained in:
Torsten Schulz (local)
2025-08-28 14:11:29 +02:00
parent c7325ac982
commit 244b61c901
12 changed files with 526 additions and 33 deletions

View File

@@ -1,13 +1,16 @@
import PredefinedActivity from '../models/PredefinedActivity.js';
import { Op } from 'sequelize';
class PredefinedActivityService {
async createPredefinedActivity(data) {
console.log('[PredefinedActivityService::createPredefinedActivity] - Creating predefined activity');
return await PredefinedActivity.create({
name: data.name,
code: data.code,
description: data.description,
durationText: data.durationText,
duration: data.duration,
imageLink: data.imageLink,
});
}
@@ -20,9 +23,11 @@ class PredefinedActivityService {
}
return await activity.update({
name: data.name,
code: data.code,
description: data.description,
durationText: data.durationText,
duration: data.duration,
imageLink: data.imageLink,
});
}
@@ -40,6 +45,23 @@ class PredefinedActivityService {
}
return activity;
}
async searchPredefinedActivities(query, limit = 20) {
const q = (query || '').trim();
if (!q || q.length < 2) {
return [];
}
return await PredefinedActivity.findAll({
where: {
[Op.or]: [
{ name: { [Op.like]: `%${q}%` } },
{ code: { [Op.like]: `%${q}%` } },
],
},
order: [['name', 'ASC']],
limit: Math.min(parseInt(limit || 20, 10), 50),
});
}
}
export default new PredefinedActivityService();