Files
2025-06-08 20:21:37 +09:00

85 lines
1.9 KiB
JavaScript

const { DataTypes } = require('sequelize');
const { sequelize } = require('../config/database');
const EventParticipant = sequelize.define('EventParticipant', {
id: {
type: DataTypes.INTEGER.UNSIGNED,
primaryKey: true,
autoIncrement: true,
comment: '이벤트 참가자 고유 식별자'
},
eventId: {
type: DataTypes.INTEGER.UNSIGNED,
allowNull: false,
references: {
model: 'Events',
key: 'id'
},
comment: '이벤트 ID'
},
memberId: {
type: DataTypes.INTEGER.UNSIGNED,
allowNull: false,
references: {
model: 'Members',
key: 'id'
},
comment: '회원 ID'
},
teamId: {
type: DataTypes.INTEGER.UNSIGNED,
allowNull: true,
references: {
model: 'EventTeams',
key: 'id'
},
comment: '이벤트 팀 ID'
},
comment: {
type: DataTypes.STRING,
allowNull: true,
comment: '비고'
},
status: {
type: DataTypes.ENUM('pending', 'confirmed', 'canceled'),
allowNull: false,
defaultValue: 'pending',
comment: '참가 상태'
},
paymentStatus: {
type: DataTypes.ENUM('unpaid', 'paid'),
allowNull: false,
defaultValue: 'unpaid',
comment: '참가비 납부 상태'
}
}, {
tableName: 'EventParticipants',
comment: '이벤트별 참가자 정보를 저장하는 테이블',
indexes: [
{
unique: true,
fields: ['eventId', 'memberId'],
name: 'unique_event_member'
}
],
timestamps: true
});
// 관계 설정
EventParticipant.associate = (models) => {
EventParticipant.belongsTo(models.Event, {
foreignKey: 'eventId'
});
EventParticipant.belongsTo(models.Member, {
foreignKey: 'memberId'
});
EventParticipant.belongsTo(models.EventTeam, {
foreignKey: 'teamId'
});
EventParticipant.hasMany(models.EventScore, {
foreignKey: 'participantId'
});
};
module.exports = EventParticipant;