import { DataTypes } from 'sequelize'; import { sequelize } from '../../utils/sequelize.js'; const Match3Level = sequelize.define('Match3Level', { id: { type: DataTypes.INTEGER, primaryKey: true, autoIncrement: true }, campaign_id: { 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 }, board_layout: { 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)' }, board_width: { 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' }, board_height: { 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' }, tile_types: { 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)' }, move_limit: { type: DataTypes.INTEGER, allowNull: false, defaultValue: 20 }, time_limit: { type: DataTypes.INTEGER, allowNull: true, comment: 'Zeitlimit in Sekunden (null = kein Limit)' }, is_active: { type: DataTypes.BOOLEAN, allowNull: false, defaultValue: true } }, { tableName: 'match3_levels', schema: 'match3', timestamps: true, underscored: true // WICHTIG: Alle Datenbankfelder im snake_case Format , freezeTableName: true}); export default Match3Level;