feat(member-notes): enhance member note functionality with structured data and observation tracking
All checks were successful
Deploy tt-tagebuch / deploy (push) Successful in 58s
All checks were successful
Deploy tt-tagebuch / deploy (push) Successful in 58s
This commit is contained in:
@@ -1,16 +1,34 @@
|
||||
import MemberNote from '../models/MemberNote.js';
|
||||
import Member from '../models/Member.js';
|
||||
import { checkAccess } from '../utils/userUtils.js';
|
||||
|
||||
import { devLog } from '../utils/logger.js';
|
||||
class MemberNoteService {
|
||||
async addNoteToMember(userToken, clubId, memberId, content) {
|
||||
async ensureMemberInClub(clubId, memberId) {
|
||||
const member = await Member.findOne({ where: { id: memberId, clubId } });
|
||||
if (!member) throw new Error('Member not found in club');
|
||||
return member;
|
||||
}
|
||||
|
||||
async addNoteToMember(userToken, clubId, memberId, content, metadata = {}) {
|
||||
await checkAccess(userToken, clubId);
|
||||
return await MemberNote.create({ memberId, content });
|
||||
await this.ensureMemberInClub(clubId, memberId);
|
||||
const allowedKinds = new Set(['general', 'strength', 'development', 'training_focus']);
|
||||
const kind = allowedKinds.has(metadata.kind) ? metadata.kind : 'general';
|
||||
return await MemberNote.create({
|
||||
memberId,
|
||||
content,
|
||||
kind,
|
||||
trainingFocus: metadata.trainingFocus || null,
|
||||
sourceType: metadata.sourceType || null,
|
||||
sourceLabel: metadata.sourceLabel || null,
|
||||
});
|
||||
}
|
||||
|
||||
async getNotesForMember(userToken, clubId, memberId) {
|
||||
devLog(userToken, clubId);
|
||||
await checkAccess(userToken, clubId);
|
||||
await this.ensureMemberInClub(clubId, memberId);
|
||||
return await MemberNote.findAll({
|
||||
where: { memberId },
|
||||
order: [['createdAt', 'DESC']]
|
||||
@@ -23,6 +41,7 @@ class MemberNoteService {
|
||||
if (!note) {
|
||||
throw new Error('Note not found');
|
||||
}
|
||||
await this.ensureMemberInClub(clubId, note.memberId);
|
||||
await note.destroy();
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user