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

/**
 * Timefix Model
 * Repräsentiert die timefix-Tabelle für Zeitkorrekturen
 */
class Timefix extends Model {
  static initialize(sequelize) {
    Timefix.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'
          }
        },
        worklog_id: {
          type: DataTypes.BIGINT,
          allowNull: false,
          references: {
            model: 'worklog',
            key: 'id'
          }
        },
        fix_type: {
          type: DataTypes.STRING(20),
          allowNull: false
        },
        fix_date_time: {
          type: DataTypes.DATE,
          allowNull: false
        }
      },
      {
        sequelize,
        tableName: 'timefix',
        timestamps: false,
        indexes: [
          {
            name: 'timefix_worklog_id_IDX',
            fields: ['worklog_id']
          },
          {
            name: 'timefix_user_id_IDX',
            fields: ['user_id']
          }
        ]
      }
    );

    return Timefix;
  }

  /**
   * Definiert Assoziationen mit anderen Models
   */
  static associate(models) {
    // Timefix gehört zu einem User
    Timefix.belongsTo(models.User, {
      foreignKey: 'user_id',
      as: 'user'
    });

    // Timefix bezieht sich auf einen Worklog-Eintrag
    Timefix.belongsTo(models.Worklog, {
      foreignKey: 'worklog_id',
      as: 'worklog'
    });
  }
}

module.exports = Timefix;



