import {
  Sequelize,
  DataTypes,
  Model,
  InferAttributes,
  InferCreationAttributes,
  CreationOptional,
} from "sequelize";

export class CandidateQA extends Model<
  InferAttributes<CandidateQA>,
  InferCreationAttributes<CandidateQA>
> {
  declare id: CreationOptional<string>;
  declare candidateId: string;
  declare question: string;
  declare answer: string;
  declare position: CreationOptional<number>;
  declare createdAt: CreationOptional<Date>;
  declare updatedAt: CreationOptional<Date>;
}

export function initCandidateQAModel(sequelize: Sequelize) {
  CandidateQA.init(
    {
      id: {
        type: DataTypes.UUID,
        defaultValue: DataTypes.UUIDV4,
        primaryKey: true,
      },
      candidateId: { type: DataTypes.UUID, allowNull: false },
      question: { type: DataTypes.TEXT, allowNull: false },
      answer: { type: DataTypes.TEXT, allowNull: false },
      position: {
        type: DataTypes.INTEGER,
        allowNull: false,
        defaultValue: 0,
      },
      createdAt: DataTypes.DATE,
      updatedAt: DataTypes.DATE,
    },
    { sequelize, modelName: "CandidateQA", tableName: "CandidateQAs" }
  );
  return CandidateQA;
}
