Added dayplanning

This commit is contained in:
Torsten Schulz
2024-09-11 15:44:56 +02:00
parent 28bf98a169
commit a22d2bcfc6
19 changed files with 778 additions and 52 deletions

View File

@@ -0,0 +1,52 @@
import { DataTypes } from 'sequelize';
import sequelize from '../database.js';
import DiaryDate from './DiaryDates.js';
import PredefinedActivity from './PredefinedActivity.js';
const DiaryDateActivity = sequelize.define('DiaryDateActivity', {
id: {
type: DataTypes.INTEGER,
primaryKey: true,
autoIncrement: true,
},
diaryDateId: {
type: DataTypes.INTEGER,
allowNull: false,
references: {
model: DiaryDate,
key: 'id',
},
onDelete: 'CASCADE',
},
predefinedActivityId: {
type: DataTypes.INTEGER,
allowNull: true,
references: {
model: PredefinedActivity,
key: 'id',
},
onDelete: 'SET NULL',
},
customActivityName: {
type: DataTypes.STRING,
allowNull: true,
},
duration: {
type: DataTypes.INTEGER,
allowNull: true,
},
durationText: {
type: DataTypes.STRING,
allowNull: true,
},
orderId: {
type: DataTypes.INTEGER,
allowNull: false,
},
}, {
tableName: 'diary_date_activities',
underscored: true,
timestamps: true,
});
export default DiaryDateActivity;

View File

@@ -30,5 +30,4 @@ const DiaryDate = sequelize.define('DiaryDate', {
timestamps: true
});
export default DiaryDate;

View File

@@ -2,6 +2,7 @@ import { DataTypes } from 'sequelize';
import sequelize from '../database.js';
import Member from './Member.js';
import DiaryDate from './DiaryDates.js';
import { encryptData, decryptData } from '../utils/encrypt.js';
const DiaryMemberNote = sequelize.define('DiaryMemberNote', {
memberId: {
@@ -25,6 +26,14 @@ const DiaryMemberNote = sequelize.define('DiaryMemberNote', {
content: {
type: DataTypes.STRING(4096),
allowNull: false,
set(value) {
const encryptedValue = encryptData(value);
this.setDataValue('content', encryptedValue);
},
get() {
const encryptedValue = this.getDataValue('content');
return decryptData(encryptedValue);
}
},
}, {
underscored: true,

View File

@@ -2,6 +2,7 @@ import { DataTypes } from 'sequelize';
import sequelize from '../database.js';
import Member from './Member.js';
import DiaryDate from './DiaryDates.js';
import { encryptData, decryptData } from '../utils/encrypt.js';
const Participant = sequelize.define('Participant', {
id: {
@@ -29,6 +30,18 @@ const Participant = sequelize.define('Participant', {
notes: {
type: DataTypes.STRING(4096),
allowNull: true,
set(value) {
const encryptedValue = encryptData(value);
this.setDataValue('notes', encryptedValue);
},
get() {
try {
const encryptedValue = this.getDataValue('notes');
return encryptData ? decryptData(encryptedValue) : null;
} catch (error) {
return null;
}
}
}
}, {
underscored: true,

View File

@@ -0,0 +1,32 @@
import { DataTypes } from 'sequelize';
import sequelize from '../database.js';
const PredefinedActivity = sequelize.define('PredefinedActivity', {
id: {
type: DataTypes.INTEGER,
primaryKey: true,
autoIncrement: true,
},
name: {
type: DataTypes.STRING,
allowNull: false,
},
description: {
type: DataTypes.TEXT,
allowNull: true,
},
durationText: {
type: DataTypes.STRING,
allowNull: true,
},
duration: {
type: DataTypes.INTEGER,
allowNull: true,
},
}, {
tableName: 'predefined_activities',
timestamps: true,
underscored: true,
});
export default PredefinedActivity;

View File

@@ -12,6 +12,8 @@ import MemberNote from './MemberNote.js';
import DiaryDateTag from './DiaryDateTag.js';
import DiaryMemberNote from './DiaryMemberNote.js';
import DiaryMemberTag from './DiaryMemberTag.js';
import PredefinedActivity from './PredefinedActivity.js';
import DiaryDateActivity from './DiaryDateActivity.js';
User.hasMany(Log, { foreignKey: 'userId' });
Log.belongsTo(User, { foreignKey: 'userId' });
@@ -45,10 +47,16 @@ DiaryTag.belongsToMany(DiaryDate, { through: DiaryDateTag, as: 'diaryDates', for
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' });
DiaryDate.hasMany(DiaryDateActivity, { foreignKey: 'diaryDateId', as: 'diaryDateActivities' });
DiaryDateActivity.belongsTo(DiaryDate, { foreignKey: 'diaryDateId', as: 'diaryDate' });
PredefinedActivity.hasMany(DiaryDateActivity, { foreignKey: 'predefinedActivityId', as: 'predefinedActivities' });
DiaryDateActivity.belongsTo(PredefinedActivity, { foreignKey: 'predefinedActivityId', as: 'predefinedActivity' });
export {
User,
Log,
@@ -65,4 +73,6 @@ export {
DiaryDateTag,
DiaryMemberNote,
DiaryMemberTag,
PredefinedActivity,
DiaryDateActivity,
};