import { DataTypes } from 'sequelize'; import { sequelize } from '../../utils/sequelize.js'; const Match3Level = sequelize.define('Match3Level', { id: { type: DataTypes.INTEGER, primaryKey: true, autoIncrement: true }, campaignId: { type: DataTypes.INTEGER, allowNull: false, references: { model: 'match3_campaigns', key: 'id' } }, name: { type: DataTypes.STRING(255), allowNull: false }, description: { type: DataTypes.TEXT, allowNull: true }, order: { type: DataTypes.INTEGER, allowNull: false }, boardLayout: { type: DataTypes.TEXT, allowNull: true, // Ändern zu true, da bereits existierende Datensätze vorhanden sind defaultValue: 'xxxxxx\nxxxxxx\nxxxxxx\nxxxxxx\nxxxxxx\nxxxxxx', // Standard-Layout für neue Level comment: 'Level-Form als String (o = kein Feld, x = Feld, Zeilen durch \n getrennt)' }, boardWidth: { type: DataTypes.INTEGER, allowNull: true, // Ändern zu true, da bereits existierende Datensätze vorhanden sind defaultValue: 6, // Standardwert für neue Level comment: 'Breite des Level-Boards' }, boardHeight: { type: DataTypes.INTEGER, allowNull: true, // Ändern zu true, da bereits existierende Datensätze vorhanden sind defaultValue: 6, // Standardwert für neue Level comment: 'Höhe des Level-Boards' }, tileTypes: { type: DataTypes.JSON, allowNull: true, // Ändern zu true, da wir jetzt eine Verknüpfungstabelle haben comment: 'Legacy: Array der verfügbaren Tile-Typen (wird durch levelTileTypes ersetzt)' }, moveLimit: { type: DataTypes.INTEGER, allowNull: false, defaultValue: 20 }, timeLimit: { type: DataTypes.INTEGER, allowNull: true, comment: 'Zeitlimit in Sekunden (null = kein Limit)' }, isActive: { type: DataTypes.BOOLEAN, allowNull: false, defaultValue: true } }, { tableName: 'match3_levels', schema: 'match3', timestamps: true, underscored: true // WICHTIG: Alle Datenbankfelder im snake_case Format }); export default Match3Level;