Umfangreiche Änderungen für Trainingslogging
This commit is contained in:
29
backend/models/DiaryDateTag.js
Normal file
29
backend/models/DiaryDateTag.js
Normal file
@@ -0,0 +1,29 @@
|
||||
import { DataTypes } from 'sequelize';
|
||||
import sequelize from '../database.js';
|
||||
import DiaryDate from './DiaryDates.js';
|
||||
import { DiaryTag } from './DiaryTag.js'; // Benannter Import
|
||||
|
||||
const DiaryDateTag = sequelize.define('DiaryDateTag', {
|
||||
diaryDateId: {
|
||||
type: DataTypes.INTEGER,
|
||||
references: {
|
||||
model: DiaryDate,
|
||||
key: 'id',
|
||||
},
|
||||
onDelete: 'CASCADE',
|
||||
},
|
||||
tagId: {
|
||||
type: DataTypes.INTEGER,
|
||||
references: {
|
||||
model: DiaryTag,
|
||||
key: 'id',
|
||||
},
|
||||
onDelete: 'CASCADE',
|
||||
},
|
||||
}, {
|
||||
underscored: true,
|
||||
tableName: 'diary_date_tags',
|
||||
timestamps: true,
|
||||
});
|
||||
|
||||
export default DiaryDateTag;
|
||||
35
backend/models/DiaryMemberNote.js
Normal file
35
backend/models/DiaryMemberNote.js
Normal file
@@ -0,0 +1,35 @@
|
||||
import { DataTypes } from 'sequelize';
|
||||
import sequelize from '../database.js';
|
||||
import Member from './Member.js';
|
||||
import DiaryDate from './DiaryDates.js';
|
||||
|
||||
const DiaryMemberNote = sequelize.define('DiaryMemberNote', {
|
||||
memberId: {
|
||||
type: DataTypes.INTEGER,
|
||||
references: {
|
||||
model: Member,
|
||||
key: 'id',
|
||||
},
|
||||
onDelete: 'CASCADE',
|
||||
allowNull: false,
|
||||
},
|
||||
diaryDateId: {
|
||||
type: DataTypes.INTEGER,
|
||||
references: {
|
||||
model: DiaryDate,
|
||||
key: 'id',
|
||||
},
|
||||
onDelete: 'CASCADE',
|
||||
allowNull: false,
|
||||
},
|
||||
content: {
|
||||
type: DataTypes.STRING(4096),
|
||||
allowNull: false,
|
||||
},
|
||||
}, {
|
||||
underscored: true,
|
||||
tableName: 'diary_member_notes',
|
||||
timestamps: true,
|
||||
});
|
||||
|
||||
export default DiaryMemberNote;
|
||||
41
backend/models/DiaryMemberTag.js
Normal file
41
backend/models/DiaryMemberTag.js
Normal file
@@ -0,0 +1,41 @@
|
||||
import { DataTypes } from 'sequelize';
|
||||
import sequelize from '../database.js';
|
||||
import Member from './Member.js';
|
||||
import DiaryDate from './DiaryDates.js';
|
||||
import { DiaryTag } from './DiaryTag.js';
|
||||
|
||||
const DiaryMemberTag = sequelize.define('DiaryMemberTag', {
|
||||
memberId: {
|
||||
type: DataTypes.INTEGER,
|
||||
references: {
|
||||
model: Member,
|
||||
key: 'id',
|
||||
},
|
||||
onDelete: 'CASCADE',
|
||||
allowNull: false,
|
||||
},
|
||||
diaryDateId: {
|
||||
type: DataTypes.INTEGER,
|
||||
references: {
|
||||
model: DiaryDate,
|
||||
key: 'id',
|
||||
},
|
||||
onDelete: 'CASCADE',
|
||||
allowNull: false,
|
||||
},
|
||||
tagId: {
|
||||
type: DataTypes.INTEGER,
|
||||
references: {
|
||||
model: DiaryTag,
|
||||
key: 'id',
|
||||
},
|
||||
onDelete: 'CASCADE',
|
||||
allowNull: false,
|
||||
},
|
||||
}, {
|
||||
underscored: true,
|
||||
tableName: 'diary_member_tags',
|
||||
timestamps: true,
|
||||
});
|
||||
|
||||
export default DiaryMemberTag;
|
||||
43
backend/models/DiaryNote.js
Normal file
43
backend/models/DiaryNote.js
Normal file
@@ -0,0 +1,43 @@
|
||||
// models/DiaryNote.js
|
||||
import { DataTypes } from 'sequelize';
|
||||
import sequelize from '../database.js';
|
||||
import Member from './Member.js';
|
||||
|
||||
const DiaryNote = sequelize.define('DiaryNote', {
|
||||
id: {
|
||||
type: DataTypes.INTEGER,
|
||||
primaryKey: true,
|
||||
autoIncrement: true,
|
||||
allowNull: false,
|
||||
},
|
||||
content: {
|
||||
type: DataTypes.TEXT,
|
||||
allowNull: false,
|
||||
},
|
||||
memberId: {
|
||||
type: DataTypes.INTEGER,
|
||||
allowNull: false,
|
||||
references: {
|
||||
model: Member,
|
||||
key: 'id',
|
||||
},
|
||||
onDelete: 'CASCADE',
|
||||
onUpdate: 'CASCADE',
|
||||
},
|
||||
diaryDateId: {
|
||||
type: DataTypes.INTEGER,
|
||||
allowNull: false,
|
||||
references: {
|
||||
model: 'diary_dates',
|
||||
key: 'id',
|
||||
},
|
||||
onDelete: 'CASCADE',
|
||||
onUpdate: 'CASCADE',
|
||||
},
|
||||
}, {
|
||||
underscored: true,
|
||||
tableName: 'diary_notes',
|
||||
timestamps: true,
|
||||
});
|
||||
|
||||
export default DiaryNote;
|
||||
46
backend/models/DiaryTag.js
Normal file
46
backend/models/DiaryTag.js
Normal file
@@ -0,0 +1,46 @@
|
||||
import { DataTypes } from 'sequelize';
|
||||
import sequelize from '../database.js';
|
||||
import Member from './Member.js';
|
||||
|
||||
const DiaryTag = sequelize.define('DiaryTag', {
|
||||
id: {
|
||||
type: DataTypes.INTEGER,
|
||||
primaryKey: true,
|
||||
autoIncrement: true,
|
||||
allowNull: false,
|
||||
},
|
||||
name: {
|
||||
type: DataTypes.STRING,
|
||||
allowNull: false,
|
||||
unique: true,
|
||||
},
|
||||
}, {
|
||||
underscored: true,
|
||||
tableName: 'diary_tags',
|
||||
timestamps: true,
|
||||
});
|
||||
|
||||
const MemberDiaryTag = sequelize.define('MemberDiaryTag', {
|
||||
memberId: {
|
||||
type: DataTypes.INTEGER,
|
||||
references: {
|
||||
model: Member,
|
||||
key: 'id',
|
||||
},
|
||||
onDelete: 'CASCADE',
|
||||
},
|
||||
tagId: {
|
||||
type: DataTypes.INTEGER,
|
||||
references: {
|
||||
model: DiaryTag,
|
||||
key: 'id',
|
||||
},
|
||||
onDelete: 'CASCADE',
|
||||
},
|
||||
}, {
|
||||
underscored: true,
|
||||
tableName: 'member_diary_tags',
|
||||
timestamps: true,
|
||||
});
|
||||
|
||||
export { DiaryTag, MemberDiaryTag };
|
||||
40
backend/models/MemberNote.js
Normal file
40
backend/models/MemberNote.js
Normal file
@@ -0,0 +1,40 @@
|
||||
import { DataTypes } from 'sequelize';
|
||||
import sequelize from '../database.js';
|
||||
import Member from './Member.js';
|
||||
import { encryptData, decryptData } from '../utils/encrypt.js';
|
||||
|
||||
const MemberNote = sequelize.define('MemberNote', {
|
||||
id: {
|
||||
type: DataTypes.INTEGER,
|
||||
primaryKey: true,
|
||||
autoIncrement: true,
|
||||
allowNull: false,
|
||||
},
|
||||
content: {
|
||||
type: DataTypes.TEXT,
|
||||
allowNull: false,
|
||||
set(value) {
|
||||
const encryptedValue = encryptData(value);
|
||||
this.setDataValue('content', encryptedValue);
|
||||
},
|
||||
get() {
|
||||
const encryptedValue = this.getDataValue('content');
|
||||
return decryptData(encryptedValue);
|
||||
}
|
||||
},
|
||||
memberId: {
|
||||
type: DataTypes.INTEGER,
|
||||
allowNull: false,
|
||||
references: {
|
||||
model: Member,
|
||||
key: 'id',
|
||||
},
|
||||
onDelete: 'CASCADE',
|
||||
},
|
||||
}, {
|
||||
underscored: true,
|
||||
tableName: 'member_notes',
|
||||
timestamps: true,
|
||||
});
|
||||
|
||||
export default MemberNote;
|
||||
@@ -6,6 +6,12 @@ import DiaryDate from './DiaryDates.js';
|
||||
import Participant from './Participant.js';
|
||||
import Member from './Member.js';
|
||||
import Activity from './Activity.js';
|
||||
import DiaryNote from './DiaryNote.js';
|
||||
import { DiaryTag, MemberDiaryTag } from './DiaryTag.js';
|
||||
import MemberNote from './MemberNote.js';
|
||||
import DiaryDateTag from './DiaryDateTag.js';
|
||||
import DiaryMemberNote from './DiaryMemberNote.js';
|
||||
import DiaryMemberTag from './DiaryMemberTag.js';
|
||||
|
||||
User.hasMany(Log, { foreignKey: 'userId' });
|
||||
Log.belongsTo(User, { foreignKey: 'userId' });
|
||||
@@ -16,11 +22,47 @@ Club.belongsToMany(User, { through: UserClub, foreignKey: 'clubId' });
|
||||
DiaryDate.belongsTo(Club, { foreignKey: 'clubId' });
|
||||
Club.hasMany(DiaryDate, { foreignKey: 'clubId' });
|
||||
|
||||
DiaryDate.belongsToMany(Member, { through: Participant, as: 'participants' });
|
||||
Member.belongsToMany(DiaryDate, { through: Participant, as: 'diaryDates' });
|
||||
DiaryDate.belongsToMany(Member, { through: Participant, as: 'participants', foreignKey: 'diaryDateId' });
|
||||
Member.belongsToMany(DiaryDate, { through: Participant, as: 'diaryDates', foreignKey: 'memberId' });
|
||||
|
||||
DiaryDate.hasMany(Activity, { as: 'activities', foreignKey: 'diaryDateId' });
|
||||
Activity.belongsTo(DiaryDate, { as: 'diaryDate', foreignKey: 'diaryDateId' });
|
||||
|
||||
Member.hasMany(DiaryNote, { as: 'diaryNotes', foreignKey: 'memberId' });
|
||||
DiaryNote.belongsTo(Member, { foreignKey: 'memberId' });
|
||||
|
||||
export { User, Log, Club, UserClub };
|
||||
Member.hasMany(MemberNote, { as: 'memberNotes', foreignKey: 'memberId' });
|
||||
MemberNote.belongsTo(Member, { foreignKey: 'memberId' });
|
||||
|
||||
DiaryDate.hasMany(DiaryNote, { as: 'diaryNotes', foreignKey: 'diaryDateId' });
|
||||
DiaryNote.belongsTo(DiaryDate, { foreignKey: 'diaryDateId' });
|
||||
|
||||
Member.belongsToMany(DiaryTag, { through: MemberDiaryTag, as: 'tags', foreignKey: 'memberId' });
|
||||
DiaryTag.belongsToMany(Member, { through: MemberDiaryTag, as: 'members', foreignKey: 'tagId' });
|
||||
|
||||
DiaryDate.belongsToMany(DiaryTag, { through: DiaryDateTag, as: 'diaryTags', foreignKey: 'diaryDateId' });
|
||||
DiaryTag.belongsToMany(DiaryDate, { through: DiaryDateTag, as: 'diaryDates', foreignKey: 'tagId' });
|
||||
|
||||
DiaryDate.belongsToMany(Member, { through: DiaryMemberNote, as: 'noteMembers', foreignKey: 'diaryDateId' });
|
||||
Member.belongsToMany(DiaryDate, { through: DiaryMemberNote, as: 'noteDates', foreignKey: 'memberId' });
|
||||
|
||||
DiaryTag.hasMany(DiaryMemberTag, { foreignKey: 'tagId', as: 'diaryMemberTags' });
|
||||
DiaryMemberTag.belongsTo(DiaryTag, { foreignKey: 'tagId', as: 'tag' });
|
||||
|
||||
export {
|
||||
User,
|
||||
Log,
|
||||
Club,
|
||||
UserClub,
|
||||
Member,
|
||||
DiaryDate,
|
||||
Participant,
|
||||
Activity,
|
||||
DiaryNote,
|
||||
DiaryTag,
|
||||
MemberDiaryTag,
|
||||
MemberNote,
|
||||
DiaryDateTag,
|
||||
DiaryMemberNote,
|
||||
DiaryMemberTag,
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user