feat(MemberPlayInterest): implement play interest management for members
All checks were successful
Deploy tt-tagebuch / deploy (push) Successful in 38s

- Added new endpoints to get and set member play interests in the memberController.
- Integrated MemberPlayInterest model into the application, establishing relationships with Member and Club models.
- Updated memberRoutes to include routes for managing member play interests.
- Enhanced memberService to handle play interest retrieval and updates.
- Updated localization files to include new terms related to member play interests.
- Refactored server.js to include MemberPlayInterest in the synchronization process.
This commit is contained in:
Torsten Schulz (local)
2026-04-15 10:48:10 +02:00
parent 45c701b149
commit 2dff5221e3
15 changed files with 1226 additions and 14 deletions

View File

@@ -137,8 +137,7 @@ const Member = sequelize.define('Member', {
type: DataTypes.BOOLEAN,
allowNull: false,
default: false,
}
,
},
gender: {
type: DataTypes.ENUM('male','female','diverse','unknown'),
allowNull: true,

View File

@@ -0,0 +1,44 @@
import { DataTypes } from 'sequelize';
import sequelize from '../database.js';
const MemberPlayInterest = sequelize.define('MemberPlayInterest', {
id: {
type: DataTypes.INTEGER,
primaryKey: true,
autoIncrement: true,
allowNull: false
},
clubId: {
type: DataTypes.INTEGER,
allowNull: false,
field: 'club_id'
},
memberId: {
type: DataTypes.INTEGER,
allowNull: false,
field: 'member_id'
},
seasonId: {
type: DataTypes.INTEGER,
allowNull: false,
field: 'season_id'
},
lineupHalf: {
type: DataTypes.ENUM('first_half', 'second_half'),
allowNull: false,
field: 'lineup_half'
},
interested: {
type: DataTypes.BOOLEAN,
allowNull: false,
defaultValue: true
}
}, {
underscored: true,
sequelize,
modelName: 'MemberPlayInterest',
tableName: 'member_play_interest',
timestamps: true
});
export default MemberPlayInterest;

View File

@@ -50,6 +50,7 @@ import MemberTransferConfig from './MemberTransferConfig.js';
import MemberContact from './MemberContact.js';
import MemberImage from './MemberImage.js';
import MemberTtrHistory from './MemberTtrHistory.js';
import MemberPlayInterest from './MemberPlayInterest.js';
import MemberOrder from './MemberOrder.js';
import MemberOrderHistory from './MemberOrderHistory.js';
import TrainingGroup from './TrainingGroup.js';
@@ -96,6 +97,10 @@ MemberNote.belongsTo(Member, { foreignKey: 'memberId' });
Member.hasMany(MemberTtrHistory, { as: 'ttrHistoryEntries', foreignKey: 'memberId' });
MemberTtrHistory.belongsTo(Member, { as: 'member', foreignKey: 'memberId' });
Member.hasMany(MemberPlayInterest, { as: 'playInterests', foreignKey: 'memberId' });
MemberPlayInterest.belongsTo(Member, { as: 'member', foreignKey: 'memberId' });
Club.hasMany(MemberPlayInterest, { as: 'memberPlayInterests', foreignKey: 'clubId' });
MemberPlayInterest.belongsTo(Club, { as: 'club', foreignKey: 'clubId' });
Member.hasMany(MemberOrder, { as: 'orders', foreignKey: 'memberId' });
MemberOrder.belongsTo(Member, { as: 'member', foreignKey: 'memberId' });
@@ -438,6 +443,7 @@ export {
MemberContact,
MemberImage,
MemberTtrHistory,
MemberPlayInterest,
MemberOrder,
MemberOrderHistory,
TrainingGroup,