Refactor multiple models to remove foreign key references while maintaining required fields, enhancing data integrity and simplifying model definitions.
This commit is contained in:
@@ -8,16 +8,12 @@ const Folder = sequelize.define('folder', {
|
|||||||
allowNull: false},
|
allowNull: false},
|
||||||
parentId: {
|
parentId: {
|
||||||
type: DataTypes.INTEGER,
|
type: DataTypes.INTEGER,
|
||||||
allowNull: true,
|
allowNull: true
|
||||||
references: {
|
},
|
||||||
model: 'folder',
|
|
||||||
key: 'id'}},
|
|
||||||
userId: {
|
userId: {
|
||||||
type: DataTypes.INTEGER,
|
type: DataTypes.INTEGER,
|
||||||
allowNull: false,
|
allowNull: false
|
||||||
references: {
|
}}, {
|
||||||
model: 'user',
|
|
||||||
key: 'id'}}}, {
|
|
||||||
tableName: 'folder',
|
tableName: 'folder',
|
||||||
schema: 'community',
|
schema: 'community',
|
||||||
underscored: true,
|
underscored: true,
|
||||||
|
|||||||
@@ -10,22 +10,11 @@ const FolderImageVisibility = sequelize.define('folder_image_visibility', {
|
|||||||
},
|
},
|
||||||
folderId: {
|
folderId: {
|
||||||
type: DataTypes.INTEGER,
|
type: DataTypes.INTEGER,
|
||||||
allowNull: false,
|
allowNull: false
|
||||||
references: {
|
|
||||||
model: 'folder',
|
|
||||||
key: 'id'
|
|
||||||
}
|
|
||||||
},
|
},
|
||||||
visibilityTypeId: {
|
visibilityTypeId: {
|
||||||
type: DataTypes.INTEGER,
|
type: DataTypes.INTEGER,
|
||||||
allowNull: false,
|
allowNull: false
|
||||||
references: {
|
|
||||||
model: {
|
|
||||||
schema: 'type',
|
|
||||||
tableName: 'image_visibility_type'
|
|
||||||
},
|
|
||||||
key: 'id'
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}, {
|
}, {
|
||||||
tableName: 'folder_image_visibility',
|
tableName: 'folder_image_visibility',
|
||||||
|
|||||||
@@ -10,19 +10,11 @@ const FolderVisibilityUser = sequelize.define('folder_visibility_user', {
|
|||||||
},
|
},
|
||||||
folderId: {
|
folderId: {
|
||||||
type: DataTypes.INTEGER,
|
type: DataTypes.INTEGER,
|
||||||
allowNull: false,
|
allowNull: false
|
||||||
references: {
|
|
||||||
model: 'folder',
|
|
||||||
key: 'id'
|
|
||||||
}
|
|
||||||
},
|
},
|
||||||
visibilityUserId: {
|
visibilityUserId: {
|
||||||
type: DataTypes.INTEGER,
|
type: DataTypes.INTEGER,
|
||||||
allowNull: false,
|
allowNull: false
|
||||||
references: {
|
|
||||||
model: 'image_visibility_user',
|
|
||||||
key: 'id'
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}, {
|
}, {
|
||||||
tableName: 'folder_visibility_user',
|
tableName: 'folder_visibility_user',
|
||||||
|
|||||||
@@ -10,19 +10,11 @@ const GuestbookEntry = sequelize.define('guestbook_entry', {
|
|||||||
allowNull: false},
|
allowNull: false},
|
||||||
recipientId: {
|
recipientId: {
|
||||||
type: DataTypes.INTEGER,
|
type: DataTypes.INTEGER,
|
||||||
allowNull: false,
|
allowNull: false
|
||||||
references: {
|
|
||||||
model: User,
|
|
||||||
key: 'id'
|
|
||||||
}
|
|
||||||
},
|
},
|
||||||
senderId: {
|
senderId: {
|
||||||
type: DataTypes.INTEGER,
|
type: DataTypes.INTEGER,
|
||||||
allowNull: true,
|
allowNull: true
|
||||||
references: {
|
|
||||||
model: User,
|
|
||||||
key: 'id'
|
|
||||||
}
|
|
||||||
},
|
},
|
||||||
senderUsername: {
|
senderUsername: {
|
||||||
type: DataTypes.STRING,
|
type: DataTypes.STRING,
|
||||||
|
|||||||
@@ -18,16 +18,12 @@ const Image = sequelize.define('image', {
|
|||||||
unique: true},
|
unique: true},
|
||||||
folderId: {
|
folderId: {
|
||||||
type: DataTypes.INTEGER,
|
type: DataTypes.INTEGER,
|
||||||
allowNull: false,
|
allowNull: false
|
||||||
references: {
|
},
|
||||||
model: 'folder',
|
|
||||||
key: 'id'}},
|
|
||||||
userId: {
|
userId: {
|
||||||
type: DataTypes.INTEGER,
|
type: DataTypes.INTEGER,
|
||||||
allowNull: false,
|
allowNull: false
|
||||||
references: {
|
}}, {
|
||||||
model: 'user',
|
|
||||||
key: 'id'}}}, {
|
|
||||||
tableName: 'image',
|
tableName: 'image',
|
||||||
schema: 'community',
|
schema: 'community',
|
||||||
underscored: true,
|
underscored: true,
|
||||||
|
|||||||
@@ -10,22 +10,11 @@ const ImageImageVisibility = sequelize.define('image_image_visibility', {
|
|||||||
},
|
},
|
||||||
imageId: {
|
imageId: {
|
||||||
type: DataTypes.INTEGER,
|
type: DataTypes.INTEGER,
|
||||||
allowNull: false,
|
allowNull: false
|
||||||
references: {
|
|
||||||
model: 'image',
|
|
||||||
key: 'id'
|
|
||||||
}
|
|
||||||
},
|
},
|
||||||
visibilityTypeId: {
|
visibilityTypeId: {
|
||||||
type: DataTypes.INTEGER,
|
type: DataTypes.INTEGER,
|
||||||
allowNull: false,
|
allowNull: false
|
||||||
references: {
|
|
||||||
model: {
|
|
||||||
schema: 'type',
|
|
||||||
tableName: 'image_visibility_type'
|
|
||||||
},
|
|
||||||
key: 'id'
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}, {
|
}, {
|
||||||
tableName: 'image_image_visibility',
|
tableName: 'image_image_visibility',
|
||||||
|
|||||||
@@ -7,19 +7,11 @@ import { encrypt, decrypt } from '../../utils/encryption.js';
|
|||||||
const UserParam = sequelize.define('user_param', {
|
const UserParam = sequelize.define('user_param', {
|
||||||
userId: {
|
userId: {
|
||||||
type: DataTypes.INTEGER,
|
type: DataTypes.INTEGER,
|
||||||
allowNull: false,
|
allowNull: false
|
||||||
references: {
|
|
||||||
model: User,
|
|
||||||
key: 'id',
|
|
||||||
},
|
|
||||||
},
|
},
|
||||||
paramTypeId: {
|
paramTypeId: {
|
||||||
type: DataTypes.INTEGER,
|
type: DataTypes.INTEGER,
|
||||||
allowNull: false,
|
allowNull: false
|
||||||
references: {
|
|
||||||
model: UserParamType,
|
|
||||||
key: 'id',
|
|
||||||
},
|
|
||||||
},
|
},
|
||||||
value: {
|
value: {
|
||||||
type: DataTypes.STRING,
|
type: DataTypes.STRING,
|
||||||
|
|||||||
@@ -6,19 +6,11 @@ import UserRightType from '../type/user_right.js';
|
|||||||
const UserRight = sequelize.define('user_right', {
|
const UserRight = sequelize.define('user_right', {
|
||||||
userId: {
|
userId: {
|
||||||
type: DataTypes.INTEGER,
|
type: DataTypes.INTEGER,
|
||||||
allowNull: false,
|
allowNull: false
|
||||||
references: {
|
|
||||||
model: User,
|
|
||||||
key: 'id'
|
|
||||||
}
|
|
||||||
},
|
},
|
||||||
rightTypeId: {
|
rightTypeId: {
|
||||||
type: DataTypes.INTEGER,
|
type: DataTypes.INTEGER,
|
||||||
allowNull: false,
|
allowNull: false
|
||||||
references: {
|
|
||||||
model: UserRightType,
|
|
||||||
key: 'id'
|
|
||||||
}
|
|
||||||
}}, {
|
}}, {
|
||||||
tableName: 'user_right',
|
tableName: 'user_right',
|
||||||
schema: 'community',
|
schema: 'community',
|
||||||
|
|||||||
@@ -17,11 +17,6 @@ Production.init({
|
|||||||
weatherTypeId: {
|
weatherTypeId: {
|
||||||
type: DataTypes.INTEGER,
|
type: DataTypes.INTEGER,
|
||||||
allowNull: true,
|
allowNull: true,
|
||||||
references: {
|
|
||||||
model: WeatherType,
|
|
||||||
key: 'id',
|
|
||||||
schema: 'falukant_type'
|
|
||||||
},
|
|
||||||
comment: 'Wetter zum Zeitpunkt der Produktionserstellung'
|
comment: 'Wetter zum Zeitpunkt der Produktionserstellung'
|
||||||
},
|
},
|
||||||
startTimestamp: {
|
startTimestamp: {
|
||||||
|
|||||||
@@ -10,20 +10,11 @@ RegionData.init({
|
|||||||
allowNull: false},
|
allowNull: false},
|
||||||
regionTypeId: {
|
regionTypeId: {
|
||||||
type: DataTypes.INTEGER,
|
type: DataTypes.INTEGER,
|
||||||
allowNull: false,
|
allowNull: false
|
||||||
references: {
|
|
||||||
model: RegionType,
|
|
||||||
key: 'id',
|
|
||||||
schema: 'falukant_type'
|
|
||||||
}
|
|
||||||
},
|
},
|
||||||
parentId: {
|
parentId: {
|
||||||
type: DataTypes.INTEGER,
|
type: DataTypes.INTEGER,
|
||||||
allowNull: true,
|
allowNull: true
|
||||||
references: {
|
|
||||||
model: 'region',
|
|
||||||
key: 'id',
|
|
||||||
schema: 'falukant_data'}
|
|
||||||
},
|
},
|
||||||
map: {
|
map: {
|
||||||
type: DataTypes.JSONB,
|
type: DataTypes.JSONB,
|
||||||
|
|||||||
@@ -8,21 +8,11 @@ RegionDistance.init(
|
|||||||
{
|
{
|
||||||
sourceRegionId: {
|
sourceRegionId: {
|
||||||
type: DataTypes.INTEGER,
|
type: DataTypes.INTEGER,
|
||||||
allowNull: false,
|
allowNull: false
|
||||||
references: {
|
|
||||||
model: RegionData,
|
|
||||||
key: 'id',
|
|
||||||
schema: 'falukant_data',
|
|
||||||
},
|
|
||||||
},
|
},
|
||||||
targetRegionId: {
|
targetRegionId: {
|
||||||
type: DataTypes.INTEGER,
|
type: DataTypes.INTEGER,
|
||||||
allowNull: false,
|
allowNull: false
|
||||||
references: {
|
|
||||||
model: RegionData,
|
|
||||||
key: 'id',
|
|
||||||
schema: 'falukant_data',
|
|
||||||
},
|
|
||||||
},
|
},
|
||||||
transportMode: {
|
transportMode: {
|
||||||
// e.g. 'land', 'water', 'air' – should match VehicleType.transportMode
|
// e.g. 'land', 'water', 'air' – should match VehicleType.transportMode
|
||||||
|
|||||||
@@ -8,18 +8,10 @@ Relationship.init(
|
|||||||
{
|
{
|
||||||
character1Id: {
|
character1Id: {
|
||||||
type: DataTypes.INTEGER,
|
type: DataTypes.INTEGER,
|
||||||
allowNull: false,
|
allowNull: false},
|
||||||
references: {
|
|
||||||
model: FalukantCharacter,
|
|
||||||
key: 'id'},
|
|
||||||
onDelete: 'CASCADE'},
|
|
||||||
character2Id: {
|
character2Id: {
|
||||||
type: DataTypes.INTEGER,
|
type: DataTypes.INTEGER,
|
||||||
allowNull: false,
|
allowNull: false},
|
||||||
references: {
|
|
||||||
model: FalukantCharacter,
|
|
||||||
key: 'id'},
|
|
||||||
onDelete: 'CASCADE'},
|
|
||||||
relationshipTypeId: {
|
relationshipTypeId: {
|
||||||
type: DataTypes.INTEGER,
|
type: DataTypes.INTEGER,
|
||||||
allowNull: false,
|
allowNull: false,
|
||||||
|
|||||||
@@ -8,13 +8,6 @@ FalukantUser.init({
|
|||||||
userId: {
|
userId: {
|
||||||
type: DataTypes.INTEGER,
|
type: DataTypes.INTEGER,
|
||||||
allowNull: false,
|
allowNull: false,
|
||||||
references: {
|
|
||||||
model: {
|
|
||||||
tableName: 'user',
|
|
||||||
schema: 'community'
|
|
||||||
},
|
|
||||||
key: 'id'
|
|
||||||
},
|
|
||||||
unique: true},
|
unique: true},
|
||||||
money: {
|
money: {
|
||||||
type: DataTypes.DECIMAL(10, 2),
|
type: DataTypes.DECIMAL(10, 2),
|
||||||
@@ -38,12 +31,7 @@ FalukantUser.init({
|
|||||||
defaultValue: 1},
|
defaultValue: 1},
|
||||||
mainBranchRegionId: {
|
mainBranchRegionId: {
|
||||||
type: DataTypes.INTEGER,
|
type: DataTypes.INTEGER,
|
||||||
allowNull: true,
|
allowNull: true
|
||||||
references: {
|
|
||||||
model: RegionData,
|
|
||||||
key: 'id',
|
|
||||||
schema: 'falukant_data'
|
|
||||||
}
|
|
||||||
},
|
},
|
||||||
lastNobilityAdvanceAt: {
|
lastNobilityAdvanceAt: {
|
||||||
type: DataTypes.DATE,
|
type: DataTypes.DATE,
|
||||||
|
|||||||
@@ -10,21 +10,11 @@ Weather.init(
|
|||||||
regionId: {
|
regionId: {
|
||||||
type: DataTypes.INTEGER,
|
type: DataTypes.INTEGER,
|
||||||
primaryKey: true,
|
primaryKey: true,
|
||||||
allowNull: false,
|
allowNull: false
|
||||||
references: {
|
|
||||||
model: RegionData,
|
|
||||||
key: 'id',
|
|
||||||
schema: 'falukant_data'
|
|
||||||
}
|
|
||||||
},
|
},
|
||||||
weatherTypeId: {
|
weatherTypeId: {
|
||||||
type: DataTypes.INTEGER,
|
type: DataTypes.INTEGER,
|
||||||
allowNull: false,
|
allowNull: false
|
||||||
references: {
|
|
||||||
model: WeatherType,
|
|
||||||
key: 'id',
|
|
||||||
schema: 'falukant_type'
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -10,13 +10,11 @@ PromotionalGiftCharacterTrait.init(
|
|||||||
giftId: {
|
giftId: {
|
||||||
type: DataTypes.INTEGER,
|
type: DataTypes.INTEGER,
|
||||||
field: 'gift_id',
|
field: 'gift_id',
|
||||||
references: { model: PromotionalGift, key: 'id' },
|
|
||||||
allowNull: false
|
allowNull: false
|
||||||
},
|
},
|
||||||
traitId: {
|
traitId: {
|
||||||
type: DataTypes.INTEGER,
|
type: DataTypes.INTEGER,
|
||||||
field: 'trait_id',
|
field: 'trait_id',
|
||||||
references: { model: CharacterTrait, key: 'id' },
|
|
||||||
allowNull: false
|
allowNull: false
|
||||||
},
|
},
|
||||||
suitability: {
|
suitability: {
|
||||||
|
|||||||
@@ -10,19 +10,11 @@ PromotionalGiftMood.init(
|
|||||||
giftId: {
|
giftId: {
|
||||||
type: DataTypes.INTEGER,
|
type: DataTypes.INTEGER,
|
||||||
field: 'gift_id',
|
field: 'gift_id',
|
||||||
references: {
|
|
||||||
model: PromotionalGift,
|
|
||||||
key: 'id'
|
|
||||||
},
|
|
||||||
allowNull: false
|
allowNull: false
|
||||||
},
|
},
|
||||||
moodId: {
|
moodId: {
|
||||||
type: DataTypes.INTEGER,
|
type: DataTypes.INTEGER,
|
||||||
field: 'mood_id',
|
field: 'mood_id',
|
||||||
references: {
|
|
||||||
model: Mood,
|
|
||||||
key: 'id'
|
|
||||||
},
|
|
||||||
allowNull: false
|
allowNull: false
|
||||||
},
|
},
|
||||||
suitability: {
|
suitability: {
|
||||||
|
|||||||
@@ -9,21 +9,11 @@ ProductWeatherEffect.init(
|
|||||||
{
|
{
|
||||||
productId: {
|
productId: {
|
||||||
type: DataTypes.INTEGER,
|
type: DataTypes.INTEGER,
|
||||||
allowNull: false,
|
allowNull: false
|
||||||
references: {
|
|
||||||
model: ProductType,
|
|
||||||
key: 'id',
|
|
||||||
schema: 'falukant_type'
|
|
||||||
}
|
|
||||||
},
|
},
|
||||||
weatherTypeId: {
|
weatherTypeId: {
|
||||||
type: DataTypes.INTEGER,
|
type: DataTypes.INTEGER,
|
||||||
allowNull: false,
|
allowNull: false
|
||||||
references: {
|
|
||||||
model: WeatherType,
|
|
||||||
key: 'id',
|
|
||||||
schema: 'falukant_type'
|
|
||||||
}
|
|
||||||
},
|
},
|
||||||
qualityEffect: {
|
qualityEffect: {
|
||||||
type: DataTypes.INTEGER,
|
type: DataTypes.INTEGER,
|
||||||
|
|||||||
@@ -9,11 +9,7 @@ RegionType.init({
|
|||||||
allowNull: false},
|
allowNull: false},
|
||||||
parentId: {
|
parentId: {
|
||||||
type: DataTypes.INTEGER,
|
type: DataTypes.INTEGER,
|
||||||
allowNull: true,
|
allowNull: true
|
||||||
references: {
|
|
||||||
model: 'region',
|
|
||||||
key: 'id',
|
|
||||||
schema: 'falukant_type'}
|
|
||||||
}
|
}
|
||||||
}, {
|
}, {
|
||||||
sequelize,
|
sequelize,
|
||||||
|
|||||||
@@ -4,19 +4,11 @@ import { DataTypes } from 'sequelize';
|
|||||||
const ForumForumPermission = sequelize.define('forum_forum_permission', {
|
const ForumForumPermission = sequelize.define('forum_forum_permission', {
|
||||||
forumId: {
|
forumId: {
|
||||||
type: DataTypes.INTEGER,
|
type: DataTypes.INTEGER,
|
||||||
allowNull: false,
|
allowNull: false
|
||||||
references: {
|
|
||||||
model: 'forum',
|
|
||||||
key: 'id'
|
|
||||||
}
|
|
||||||
},
|
},
|
||||||
permissionId: {
|
permissionId: {
|
||||||
type: DataTypes.INTEGER,
|
type: DataTypes.INTEGER,
|
||||||
allowNull: false,
|
allowNull: false
|
||||||
references: {
|
|
||||||
model: 'forum_permission',
|
|
||||||
key: 'id'
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}, {
|
}, {
|
||||||
tableName: 'forum_forum_permission',
|
tableName: 'forum_forum_permission',
|
||||||
|
|||||||
@@ -9,11 +9,7 @@ const Match3Level = sequelize.define('Match3Level', {
|
|||||||
},
|
},
|
||||||
campaignId: {
|
campaignId: {
|
||||||
type: DataTypes.INTEGER,
|
type: DataTypes.INTEGER,
|
||||||
allowNull: false,
|
allowNull: false
|
||||||
references: {
|
|
||||||
model: 'match3_campaigns',
|
|
||||||
key: 'id'
|
|
||||||
}
|
|
||||||
},
|
},
|
||||||
name: {
|
name: {
|
||||||
type: DataTypes.STRING(255),
|
type: DataTypes.STRING(255),
|
||||||
|
|||||||
@@ -10,19 +10,11 @@ const Match3LevelTileType = sequelize.define('Match3LevelTileType', {
|
|||||||
levelId: {
|
levelId: {
|
||||||
type: DataTypes.INTEGER,
|
type: DataTypes.INTEGER,
|
||||||
allowNull: false,
|
allowNull: false,
|
||||||
references: {
|
|
||||||
model: 'match3_levels',
|
|
||||||
key: 'id'
|
|
||||||
},
|
|
||||||
comment: 'Referenz auf den Level'
|
comment: 'Referenz auf den Level'
|
||||||
},
|
},
|
||||||
tileTypeId: {
|
tileTypeId: {
|
||||||
type: DataTypes.INTEGER,
|
type: DataTypes.INTEGER,
|
||||||
allowNull: false,
|
allowNull: false,
|
||||||
references: {
|
|
||||||
model: 'match3_tile_types',
|
|
||||||
key: 'id'
|
|
||||||
},
|
|
||||||
comment: 'Referenz auf den Tile-Typ'
|
comment: 'Referenz auf den Tile-Typ'
|
||||||
},
|
},
|
||||||
weight: {
|
weight: {
|
||||||
|
|||||||
@@ -9,14 +9,7 @@ const TaxiHighscore = sequelize.define('TaxiHighscore', {
|
|||||||
},
|
},
|
||||||
userId: {
|
userId: {
|
||||||
type: DataTypes.INTEGER,
|
type: DataTypes.INTEGER,
|
||||||
allowNull: true, // Kann null sein, falls User gelöscht wird
|
allowNull: true // Kann null sein, falls User gelöscht wird
|
||||||
references: {
|
|
||||||
model: {
|
|
||||||
tableName: 'user',
|
|
||||||
schema: 'community'
|
|
||||||
},
|
|
||||||
key: 'id'
|
|
||||||
}
|
|
||||||
},
|
},
|
||||||
nickname: {
|
nickname: {
|
||||||
type: DataTypes.STRING(100),
|
type: DataTypes.STRING(100),
|
||||||
@@ -44,13 +37,6 @@ const TaxiHighscore = sequelize.define('TaxiHighscore', {
|
|||||||
mapId: {
|
mapId: {
|
||||||
type: DataTypes.INTEGER,
|
type: DataTypes.INTEGER,
|
||||||
allowNull: true,
|
allowNull: true,
|
||||||
references: {
|
|
||||||
model: {
|
|
||||||
tableName: 'taxi_map',
|
|
||||||
schema: 'taxi'
|
|
||||||
},
|
|
||||||
key: 'id'
|
|
||||||
},
|
|
||||||
comment: 'ID der gespielten Map'
|
comment: 'ID der gespielten Map'
|
||||||
},
|
},
|
||||||
mapName: {
|
mapName: {
|
||||||
|
|||||||
@@ -13,13 +13,7 @@ const interestTranslation = sequelize.define('interest_translation_type', {
|
|||||||
},
|
},
|
||||||
interestsId: {
|
interestsId: {
|
||||||
type: DataTypes.INTEGER,
|
type: DataTypes.INTEGER,
|
||||||
allowNull: false,
|
allowNull: false
|
||||||
references: {
|
|
||||||
model: Interest,
|
|
||||||
key: 'id'
|
|
||||||
},
|
|
||||||
onUpdate: 'CASCADE',
|
|
||||||
onDelete: 'CASCADE'
|
|
||||||
}}, {
|
}}, {
|
||||||
tableName: 'interest_translation',
|
tableName: 'interest_translation',
|
||||||
schema: 'type',
|
schema: 'type',
|
||||||
|
|||||||
@@ -21,11 +21,7 @@ const UserParamType = sequelize.define('user_param_type', {
|
|||||||
},
|
},
|
||||||
settingsId: {
|
settingsId: {
|
||||||
type: DataTypes.INTEGER,
|
type: DataTypes.INTEGER,
|
||||||
allowNull: false,
|
allowNull: false
|
||||||
references: {
|
|
||||||
model: 'settings',
|
|
||||||
key: 'id'
|
|
||||||
}
|
|
||||||
},
|
},
|
||||||
orderId: {
|
orderId: {
|
||||||
type: DataTypes.INTEGER,
|
type: DataTypes.INTEGER,
|
||||||
|
|||||||
Reference in New Issue
Block a user