module.exports = function (sequelize, DataTypes) {
  const Track = sequelize.define('track', {
    id: { type: DataTypes.INTEGER, primaryKey: true, autoIncrement: true },
    externalId: { type: DataTypes.STRING(50), index: true }, // eslint-disable-line new-cap
    service: DataTypes.ENUM( // eslint-disable-line new-cap
      'deezer',
      'google',
      'itunes',
      'spotify',
      'xbox',
      'youtube'
    ),
    name: DataTypes.TEXT,
    artistId: DataTypes.INTEGER,
    albumId: DataTypes.INTEGER,
    albumName: DataTypes.TEXT,
  }, {
    paranoid: true,
    indexes: [
      {
        fields: ['externalId', 'service'],
      },
    ],
    getterMethods: {
      type() {
        return 'track';
      },
    },
  });

  Track.associate = function associate(models) {
    Track.hasMany(models.match);
    Track.belongsTo(models.artist);
  };

  return Track;
}