const { Model, DataTypes } = require('sequelize');

class Timewish extends Model {
  static initialize(sequelize) {
    Timewish.init(
      {
        id: {
          type: DataTypes.BIGINT,
          primaryKey: true,
          autoIncrement: true,
          allowNull: false
        },
        version: {
          type: DataTypes.INTEGER,
          allowNull: false,
          defaultValue: 0
        },
        user_id: {
          type: DataTypes.BIGINT,
          allowNull: false,
          references: {
            model: 'user',
            key: 'id'
          }
        },
        day: {
          type: DataTypes.INTEGER,
          allowNull: false,
          comment: '1=Montag, 2=Dienstag, ..., 5=Freitag, 6=Samstag, 7=Sonntag'
        },
        wishtype: {
          type: DataTypes.INTEGER,
          allowNull: false,
          comment: '1=Ende nach Uhrzeit, 2=Ende nach Stunden'
        },
        hours: {
          type: DataTypes.DECIMAL(10, 2),
          allowNull: true,
          comment: 'Gewünschte Stunden (bei wishtype=2)'
        },
        end_time: {
          type: DataTypes.TIME,
          allowNull: true,
          comment: 'Gewünschte Endzeit (bei wishtype=1)'
        },
        start_date: {
          type: DataTypes.DATEONLY,
          allowNull: false,
          comment: 'Ab welchem Datum gilt dieser Timewish (YYYY-MM-DD)'
        },
        end_date: {
          type: DataTypes.DATEONLY,
          allowNull: true,
          comment: 'Bis zu welchem Datum gilt dieser Timewish (NULL = bis heute)'
        }
      },
      {
        sequelize,
        tableName: 'timewish',
        timestamps: false,
        indexes: [
          {
            name: 'fk_timewish_user',
            fields: ['user_id']
          }
        ]
      }
    );
    return Timewish;
  }
}

module.exports = Timewish;

