Files
yourpart3/backend/models/minigames/taxiHighscore.js
Torsten Schulz (local) 42349e46c8 Änderung: Hinzufügen von TaxiHighscore-Logik und Verbesserung der API-Integration
Änderungen:
- Implementierung des neuen Routers für TaxiHighscore zur Verwaltung von Highscore-Daten.
- Anpassung der Datenbankmodelle zur Unterstützung von TaxiHighscore-Associations.
- Erweiterung der Vue-Komponenten zur Anzeige und Speicherung von Highscores im Taxi-Spiel.
- Verbesserung der Statusanzeige im AppHeader zur besseren Benutzerinteraktion.

Diese Anpassungen erweitern die Spielmechanik und Benutzererfahrung, indem sie die Verwaltung von Highscores integrieren und die Benutzeroberfläche optimieren.
2025-10-05 00:04:28 +02:00

101 lines
2.2 KiB
JavaScript

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;