import { DataTypes } from 'sequelize'; import { sequelize } from '../../utils/sequelize.js'; const TaxiHighscore = sequelize.define('TaxiHighscore', { id: { type: DataTypes.INTEGER, primaryKey: true, autoIncrement: true }, userId: { type: DataTypes.INTEGER, allowNull: true, // Kann null sein, falls User gelöscht wird references: { model: { tableName: 'user', schema: 'community' }, key: 'id' } }, nickname: { type: DataTypes.STRING(100), allowNull: true, // Kann null sein, falls User gelöscht wird comment: 'Nickname zum Zeitpunkt des Spiels - bleibt erhalten wenn User gelöscht wird' }, passengersDelivered: { type: DataTypes.INTEGER, allowNull: false, defaultValue: 0, comment: 'Anzahl der abgelieferten Passagiere' }, playtime: { type: DataTypes.INTEGER, allowNull: false, defaultValue: 0, comment: 'Spielzeit in Sekunden' }, points: { type: DataTypes.INTEGER, allowNull: false, defaultValue: 0, comment: 'Erreichte Punkte' }, mapId: { type: DataTypes.INTEGER, allowNull: true, references: { model: { tableName: 'taxi_map', schema: 'taxi' }, key: 'id' }, comment: 'ID der gespielten Map' }, mapName: { type: DataTypes.STRING(100), allowNull: true, comment: 'Name der Map zum Zeitpunkt des Spiels' }, createdAt: { type: DataTypes.DATE, allowNull: false, defaultValue: DataTypes.NOW }, updatedAt: { type: DataTypes.DATE, allowNull: false, defaultValue: DataTypes.NOW } }, { tableName: 'taxi_highscores', schema: 'taxi', timestamps: true, underscored: true, indexes: [ { fields: ['user_id'] }, { fields: ['points'] }, { fields: ['passengers_delivered'] }, { fields: ['map_id'] }, { fields: ['created_at'] }, { unique: true, fields: ['user_id', 'map_id'], name: 'unique_user_map_highscore' } ] }); export default TaxiHighscore;