import { Model, DataTypes } from 'sequelize'; import { sequelize } from '../../utils/sequelize.js'; class CalendarEvent extends Model { } CalendarEvent.init({ id: { type: DataTypes.INTEGER, primaryKey: true, autoIncrement: true }, userId: { type: DataTypes.INTEGER, allowNull: false, references: { model: 'user', key: 'id' } }, title: { type: DataTypes.STRING(255), allowNull: false }, description: { type: DataTypes.TEXT, allowNull: true }, categoryId: { type: DataTypes.STRING(50), allowNull: false, defaultValue: 'personal', comment: 'Category key: personal, work, family, health, birthday, holiday, reminder, other' }, startDate: { type: DataTypes.DATEONLY, allowNull: false }, endDate: { type: DataTypes.DATEONLY, allowNull: true, comment: 'End date for multi-day events, null means same as startDate' }, startTime: { type: DataTypes.TIME, allowNull: true, comment: 'Start time, null for all-day events' }, endTime: { type: DataTypes.TIME, allowNull: true, comment: 'End time, null for all-day events' }, allDay: { type: DataTypes.BOOLEAN, allowNull: false, defaultValue: false }, createdAt: { type: DataTypes.DATE, defaultValue: DataTypes.NOW }, updatedAt: { type: DataTypes.DATE, defaultValue: DataTypes.NOW } }, { sequelize, modelName: 'CalendarEvent', tableName: 'calendar_event', schema: 'community', timestamps: true, underscored: true, indexes: [ { fields: ['user_id'] }, { fields: ['user_id', 'start_date'] }, { fields: ['user_id', 'start_date', 'end_date'] } ] }); export default CalendarEvent;