feat: Einführung von Umgebungsvariablen und Startskripten für die Backend-Anwendung

- Hinzufügen eines zentralen Skripts zum Laden von Umgebungsvariablen aus einer .env-Datei.
- Implementierung von Start- und Entwicklungs-Skripten in der package.json für eine vereinfachte Ausführung der Anwendung.
- Bereinigung und Entfernung nicht mehr benötigter Minigame-Modelle und -Services zur Verbesserung der Codebasis.
- Anpassungen an den Datenbankmodellen zur Unterstützung von neuen Assoziationen und zur Verbesserung der Lesbarkeit.
This commit is contained in:
Torsten Schulz (local)
2025-08-23 22:27:19 +02:00
parent 66818cc728
commit 6da849ca3c
128 changed files with 1054 additions and 1611 deletions

20
backend/config/loadEnv.js Normal file
View File

@@ -0,0 +1,20 @@
// Centralized environment loader
import path from 'path';
import { fileURLToPath } from 'url';
import dotenv from 'dotenv';
const __filename = fileURLToPath(import.meta.url);
const __dirname = path.dirname(__filename);
// Resolve backend/.env regardless of cwd
const envPath = path.resolve(__dirname, '../.env');
const result = dotenv.config({ path: envPath });
if (result.error) {
console.warn('[env] Konnte .env nicht laden:', result.error.message);
} else {
if (!process.env.SECRET_KEY) {
console.warn('[env] SECRET_KEY nicht gesetzt in .env');
}
}
export {};

View File

@@ -1,32 +0,0 @@
import MinigamesService from '../services/minigamesService.js';
function extractHashedUserId(req) {
return req.headers?.userid;
}
class MinigamesController {
constructor() {
this.service = MinigamesService;
this.listCampaigns = this._wrap((userId, req) => this.service.listCampaigns());
this.getCampaign = this._wrap((userId, req) => this.service.getCampaign(req.params.code));
this.getProgress = this._wrap((userId, req) => this.service.getProgress(userId, req.params.code));
this.saveProgress = this._wrap((userId, req) => this.service.saveProgress(userId, req.params.code, req.body));
}
_wrap(fn, { successStatus = 200 } = {}) {
return async (req, res) => {
try {
const userId = extractHashedUserId(req);
if (!userId) return res.status(400).json({ error: 'Missing user identifier' });
const result = await fn(userId, req, res);
res.status(successStatus).json(result);
} catch (error) {
console.error('Minigames controller error:', error);
res.status(500).json({ error: error.message || 'Internal error' });
}
};
}
}
export default new MinigamesController();

View File

@@ -97,30 +97,15 @@ import Underground from './falukant/data/underground.js';
import UndergroundType from './falukant/type/underground.js'; import UndergroundType from './falukant/type/underground.js';
import Blog from './community/blog.js'; import Blog from './community/blog.js';
import BlogPost from './community/blog_post.js'; import BlogPost from './community/blog_post.js';
import MinigameCampaign from './service/minigame_campaign.js'; import Campaign from './match3/campaign.js';
import MinigameCampaignLevel from './service/minigame_campaign_level.js';
import MinigameUserProgress from './service/minigame_user_progress.js';
// Match3 Models
import Match3Campaign from './match3/campaign.js';
import Match3Level from './match3/level.js'; import Match3Level from './match3/level.js';
import Match3Objective from './match3/objective.js'; import Objective from './match3/objective.js';
import Match3UserProgress from './match3/userProgress.js'; import UserProgress from './match3/userProgress.js';
import Match3UserLevelProgress from './match3/userLevelProgress.js'; import UserLevelProgress from './match3/userLevelProgress.js';
import Match3TileType from './match3/tileType.js';
import Match3LevelTileType from './match3/levelTileType.js';
export default function setupAssociations() { export default function setupAssociations() {
// RoomType 1:n Room // RoomType 1:n Room
RoomType.hasMany(Room, { foreignKey: 'roomTypeId', as: 'rooms' }); RoomType.hasMany(Room, { foreignKey: 'roomTypeId', as: 'rooms' });
// Minigames associations
MinigameCampaign.hasMany(MinigameCampaignLevel, { foreignKey: 'campaign_id', as: 'levels' });
MinigameCampaignLevel.belongsTo(MinigameCampaign, { foreignKey: 'campaign_id', as: 'campaign' });
User.hasMany(MinigameUserProgress, { foreignKey: 'user_id', as: 'minigameProgress' });
MinigameUserProgress.belongsTo(User, { foreignKey: 'user_id', as: 'user' });
MinigameCampaign.hasMany(MinigameUserProgress, { foreignKey: 'campaign_id', as: 'userProgress' });
MinigameUserProgress.belongsTo(MinigameCampaign, { foreignKey: 'campaign_id', as: 'campaign' });
Room.belongsTo(RoomType, { foreignKey: 'roomTypeId', as: 'roomType' }); Room.belongsTo(RoomType, { foreignKey: 'roomTypeId', as: 'roomType' });
// ChatUser <-> ChatRight n:m // ChatUser <-> ChatRight n:m
ChatUser.belongsToMany(ChatRight, { ChatUser.belongsToMany(ChatRight, {
@@ -789,77 +774,16 @@ export default function setupAssociations() {
BlogPost.belongsTo(User, { foreignKey: 'user_id', as: 'author' }); BlogPost.belongsTo(User, { foreignKey: 'user_id', as: 'author' });
User.hasMany(BlogPost, { foreignKey: 'user_id', as: 'blogPosts' }); User.hasMany(BlogPost, { foreignKey: 'user_id', as: 'blogPosts' });
// Match3 associations // Match3 Campaign & Levels
Match3Campaign.hasMany(Match3Level, { Campaign.hasMany(Match3Level, { foreignKey: 'campaignId', as: 'levels' });
foreignKey: 'campaignId', Match3Level.belongsTo(Campaign, { foreignKey: 'campaignId', as: 'campaign' });
as: 'levels' Match3Level.hasMany(Objective, { foreignKey: 'levelId', as: 'objectives' });
}); Objective.belongsTo(Match3Level, { foreignKey: 'levelId', as: 'level' });
Match3Level.belongsTo(Match3Campaign, { // User progress tracking
foreignKey: 'campaignId', Campaign.hasMany(UserProgress, { foreignKey: 'campaignId', as: 'userProgressEntries' });
as: 'campaign' UserProgress.belongsTo(Campaign, { foreignKey: 'campaignId', as: 'campaign' });
}); UserProgress.hasMany(UserLevelProgress, { foreignKey: 'userProgressId', as: 'levelProgress' });
UserLevelProgress.belongsTo(UserProgress, { foreignKey: 'userProgressId', as: 'userProgress' });
Match3Level.hasMany(Match3Objective, { Match3Level.hasMany(UserLevelProgress, { foreignKey: 'levelId', as: 'userLevelProgress' });
foreignKey: 'levelId', UserLevelProgress.belongsTo(Match3Level, { foreignKey: 'levelId', as: 'level' });
as: 'objectives'
});
Match3Objective.belongsTo(Match3Level, {
foreignKey: 'levelId',
as: 'level'
});
Match3Campaign.hasMany(Match3UserProgress, {
foreignKey: 'campaignId',
as: 'userProgress'
});
Match3UserProgress.belongsTo(Match3Campaign, {
foreignKey: 'campaignId',
as: 'campaign'
});
User.hasMany(Match3UserProgress, {
foreignKey: 'userId',
as: 'match3Progress'
});
Match3UserProgress.belongsTo(User, {
foreignKey: 'userId',
as: 'user'
});
Match3UserProgress.hasMany(Match3UserLevelProgress, {
foreignKey: 'userProgressId',
as: 'levelProgress'
});
Match3UserLevelProgress.belongsTo(Match3UserProgress, {
foreignKey: 'userProgressId',
as: 'userProgress'
});
Match3Level.hasMany(Match3UserLevelProgress, {
foreignKey: 'levelId',
as: 'userProgress'
});
Match3UserLevelProgress.belongsTo(Match3Level, {
foreignKey: 'levelId',
as: 'level'
});
// Match3 Tile Type associations
Match3Level.hasMany(Match3LevelTileType, {
foreignKey: 'levelId',
as: 'levelTileTypes'
});
Match3LevelTileType.belongsTo(Match3Level, {
foreignKey: 'levelId',
as: 'level'
});
Match3TileType.hasMany(Match3LevelTileType, {
foreignKey: 'tileTypeId',
as: 'levelTileTypes'
});
Match3LevelTileType.belongsTo(Match3TileType, {
foreignKey: 'tileTypeId',
as: 'tileType'
});
} }

View File

@@ -5,19 +5,14 @@ const ChatRight = sequelize.define('ChatRight', {
id: { id: {
type: DataTypes.INTEGER, type: DataTypes.INTEGER,
primaryKey: true, primaryKey: true,
autoIncrement: true, autoIncrement: true},
},
tr: { tr: {
type: DataTypes.STRING(32), type: DataTypes.STRING(32),
allowNull: false, allowNull: false,
unique: true, unique: true}}, {
},
}, {
schema: 'chat', schema: 'chat',
tableName: 'rights', tableName: 'rights',
timestamps: false, timestamps: false,
underscored: true, underscored: true});
,
freezeTableName: true});
export default ChatRight; export default ChatRight;

View File

@@ -5,55 +5,43 @@ const Room = sequelize.define('Room', {
id: { id: {
type: DataTypes.INTEGER, type: DataTypes.INTEGER,
primaryKey: true, primaryKey: true,
autoIncrement: true, autoIncrement: true},
},
title: { title: {
type: DataTypes.TEXT, type: DataTypes.TEXT,
allowNull: false, allowNull: false},
}, ownerId: {
owner_id: {
type: DataTypes.INTEGER, type: DataTypes.INTEGER,
allowNull: true, // kann null sein, wenn system-owned allowNull: true, // kann null sein, wenn system-owned
}, },
room_type_id: { roomTypeId: {
type: DataTypes.INTEGER, type: DataTypes.INTEGER,
allowNull: true, allowNull: true},
}, isPublic: {
is_public: {
type: DataTypes.BOOLEAN, type: DataTypes.BOOLEAN,
allowNull: false, allowNull: false,
defaultValue: true, defaultValue: true},
}, genderRestrictionId: {
gender_restriction_id: {
type: DataTypes.INTEGER, type: DataTypes.INTEGER,
allowNull: true, allowNull: true},
},
password: { password: {
type: DataTypes.STRING, type: DataTypes.STRING,
allowNull: true, allowNull: true},
}, minAge: {
min_age: {
type: DataTypes.INTEGER, type: DataTypes.INTEGER,
allowNull: true, allowNull: true},
}, maxAge: {
max_age: {
type: DataTypes.INTEGER, type: DataTypes.INTEGER,
allowNull: true, allowNull: true},
}, passwordHash: {
password_hash: {
type: DataTypes.TEXT, type: DataTypes.TEXT,
allowNull: true, allowNull: true},
}, friendsOfOwnerOnly: {
friends_of_owner_only: {
type: DataTypes.BOOLEAN, type: DataTypes.BOOLEAN,
allowNull: false, allowNull: false,
defaultValue: false, defaultValue: false},
}, requiredUserRightId: {
required_user_right_id: {
type: DataTypes.INTEGER, type: DataTypes.INTEGER,
allowNull: true, allowNull: true}}, {
},
}, {
schema: 'chat', schema: 'chat',
tableName: 'room', tableName: 'room',
timestamps: true, timestamps: true,
@@ -61,10 +49,7 @@ const Room = sequelize.define('Room', {
indexes: [ indexes: [
{ {
name: 'idx_chat_room_owner', name: 'idx_chat_room_owner',
fields: ['owner_id'], fields: ['ownerId']},
, ]});
freezeTableName: true},
],
});
export default Room; export default Room;

View File

@@ -5,19 +5,14 @@ const RoomType = sequelize.define('RoomType', {
id: { id: {
type: DataTypes.INTEGER, type: DataTypes.INTEGER,
primaryKey: true, primaryKey: true,
autoIncrement: true, autoIncrement: true},
},
tr: { tr: {
type: DataTypes.STRING(32), type: DataTypes.STRING(32),
allowNull: false, allowNull: false,
unique: true, unique: true}}, {
},
}, {
schema: 'chat', schema: 'chat',
tableName: 'room_type', tableName: 'room_type',
timestamps: false, timestamps: false,
underscored: true, underscored: true});
,
freezeTableName: true});
export default RoomType; export default RoomType;

View File

@@ -5,38 +5,29 @@ const ChatUser = sequelize.define('ChatUser', {
id: { id: {
type: DataTypes.INTEGER, type: DataTypes.INTEGER,
primaryKey: true, primaryKey: true,
autoIncrement: true, autoIncrement: true},
}, falukantUserId: {
falukant_user_id: {
type: DataTypes.INTEGER, type: DataTypes.INTEGER,
allowNull: false, allowNull: false,
comment: 'Verknüpfung zu community.falukant_user', comment: 'Verknüpfung zu community.falukant_user'},
}, displayName: {
display_name: {
type: DataTypes.STRING(64), type: DataTypes.STRING(64),
allowNull: false, allowNull: false},
},
color: { color: {
type: DataTypes.STRING(16), // z.B. Hex-Code type: DataTypes.STRING(16), // z.B. Hex-Code
allowNull: false, allowNull: false,
defaultValue: '#000000', defaultValue: '#000000'},
}, showGender: {
show_gender: {
type: DataTypes.BOOLEAN, type: DataTypes.BOOLEAN,
allowNull: false, allowNull: false,
defaultValue: true, defaultValue: true},
}, showAge: {
show_age: {
type: DataTypes.BOOLEAN, type: DataTypes.BOOLEAN,
allowNull: false, allowNull: false,
defaultValue: true, defaultValue: true}}, {
},
}, {
schema: 'chat', schema: 'chat',
tableName: 'user', tableName: 'user',
timestamps: true, timestamps: true,
underscored: true, underscored: true});
,
freezeTableName: true});
export default ChatUser; export default ChatUser;

View File

@@ -4,24 +4,21 @@ import ChatUser from './user.js';
import ChatRight from './rights.js'; import ChatRight from './rights.js';
const ChatUserRight = sequelize.define('ChatUserRight', { const ChatUserRight = sequelize.define('ChatUserRight', {
chat_user_id: { chatUserId: {
type: DataTypes.INTEGER, type: DataTypes.INTEGER,
allowNull: false, allowNull: false,
primaryKey: true, primaryKey: true,
references: null, // Assoziation wird separat gesetzt references: null, // Assoziation wird separat gesetzt
}, },
chat_right_id: { chatRightId: {
type: DataTypes.INTEGER, type: DataTypes.INTEGER,
allowNull: false, allowNull: false,
primaryKey: true, primaryKey: true,
references: null, // Assoziation wird separat gesetzt references: null, // Assoziation wird separat gesetzt
}, }}, {
}, {
schema: 'chat', schema: 'chat',
tableName: 'user_rights', tableName: 'user_rights',
timestamps: false, timestamps: false,
underscored: true, underscored: true});
,
freezeTableName: true});
export default ChatUserRight; export default ChatUserRight;

View File

@@ -4,31 +4,28 @@ import { sequelize } from '../../utils/sequelize.js';
class Blog extends Model {} class Blog extends Model {}
Blog.init({ Blog.init({
user_id: { userId: {
type: DataTypes.INTEGER, type: DataTypes.INTEGER,
allowNull: false, allowNull: false,
field: 'user_id' field: 'user_id'
}, },
title: { title: {
type: DataTypes.STRING(255), type: DataTypes.STRING(255),
allowNull: false, allowNull: false},
},
description: { description: {
type: DataTypes.TEXT, type: DataTypes.TEXT,
allowNull: true, allowNull: true},
},
// 'public' or 'logged_in' // 'public' or 'logged_in'
visibility: { visibility: {
type: DataTypes.STRING(20), type: DataTypes.STRING(20),
allowNull: false, allowNull: false,
defaultValue: 'public', defaultValue: 'public'},
}, ageMin: {
age_min: {
type: DataTypes.INTEGER, type: DataTypes.INTEGER,
allowNull: true, allowNull: true,
field: 'age_min' field: 'age_min'
}, },
age_max: { ageMax: {
type: DataTypes.INTEGER, type: DataTypes.INTEGER,
allowNull: true, allowNull: true,
field: 'age_max' field: 'age_max'
@@ -36,14 +33,13 @@ Blog.init({
// 'm' | 'f' | null; comma-separated for future-proofing (e.g., 'm,f') // 'm' | 'f' | null; comma-separated for future-proofing (e.g., 'm,f')
genders: { genders: {
type: DataTypes.STRING(10), type: DataTypes.STRING(10),
allowNull: true, allowNull: true},
}, createdAt: {
created_at: {
type: DataTypes.DATE, type: DataTypes.DATE,
defaultValue: DataTypes.NOW, defaultValue: DataTypes.NOW,
field: 'created_at' field: 'created_at'
}, },
updated_at: { updatedAt: {
type: DataTypes.DATE, type: DataTypes.DATE,
defaultValue: DataTypes.NOW, defaultValue: DataTypes.NOW,
field: 'updated_at' field: 'updated_at'
@@ -54,8 +50,6 @@ Blog.init({
tableName: 'blog', tableName: 'blog',
schema: 'community', schema: 'community',
timestamps: true, timestamps: true,
underscored: true, underscored: true});
,
freezeTableName: true});
export default Blog; export default Blog;

View File

@@ -4,30 +4,28 @@ import { sequelize } from '../../utils/sequelize.js';
class BlogPost extends Model {} class BlogPost extends Model {}
BlogPost.init({ BlogPost.init({
blog_id: { blogId: {
type: DataTypes.INTEGER, type: DataTypes.INTEGER,
allowNull: false, allowNull: false,
field: 'blog_id' field: 'blog_id'
}, },
user_id: { userId: {
type: DataTypes.INTEGER, type: DataTypes.INTEGER,
allowNull: false, allowNull: false,
field: 'user_id' field: 'user_id'
}, },
title: { title: {
type: DataTypes.STRING(255), type: DataTypes.STRING(255),
allowNull: false, allowNull: false},
},
content: { content: {
type: DataTypes.TEXT, type: DataTypes.TEXT,
allowNull: false, allowNull: false},
}, createdAt: {
created_at: {
type: DataTypes.DATE, type: DataTypes.DATE,
defaultValue: DataTypes.NOW, defaultValue: DataTypes.NOW,
field: 'created_at' field: 'created_at'
}, },
updated_at: { updatedAt: {
type: DataTypes.DATE, type: DataTypes.DATE,
defaultValue: DataTypes.NOW, defaultValue: DataTypes.NOW,
field: 'updated_at' field: 'updated_at'
@@ -38,8 +36,6 @@ BlogPost.init({
tableName: 'blog_post', tableName: 'blog_post',
schema: 'community', schema: 'community',
timestamps: true, timestamps: true,
underscored: true, underscored: true});
,
freezeTableName: true});
export default BlogPost; export default BlogPost;

View File

@@ -4,30 +4,24 @@ import { sequelize } from '../../utils/sequelize.js';
class Diary extends Model { } class Diary extends Model { }
Diary.init({ Diary.init({
user_id: { userId: {
type: DataTypes.INTEGER, type: DataTypes.INTEGER,
allowNull: false, allowNull: false},
},
text: { text: {
type: DataTypes.TEXT, type: DataTypes.TEXT,
allowNull: false, allowNull: false},
}, createdAt: {
created_at: {
type: DataTypes.DATE, type: DataTypes.DATE,
defaultValue: DataTypes.NOW, defaultValue: DataTypes.NOW},
}, updatedAt: {
updated_at: {
type: DataTypes.DATE, type: DataTypes.DATE,
defaultValue: DataTypes.NOW, defaultValue: DataTypes.NOW}
}
}, { }, {
sequelize, sequelize,
modelName: 'Diary', modelName: 'Diary',
tableName: 'diary', tableName: 'diary',
schema: 'community', schema: 'community',
timestamps: true, timestamps: true,
underscored: true, underscored: true});
,
freezeTableName: true});
export default Diary; export default Diary;

View File

@@ -4,34 +4,26 @@ import { sequelize } from '../../utils/sequelize.js';
class DiaryHistory extends Model { } class DiaryHistory extends Model { }
DiaryHistory.init({ DiaryHistory.init({
diary_id: { diaryId: {
type: DataTypes.INTEGER, type: DataTypes.INTEGER,
allowNull: false, allowNull: false},
}, userId: {
user_id: {
type: DataTypes.INTEGER, type: DataTypes.INTEGER,
allowNull: false, allowNull: false},
}, oldText: {
old_text: {
type: DataTypes.TEXT, type: DataTypes.TEXT,
allowNull: false, allowNull: false},
}, oldCreatedAt: {
old_created_at: {
type: DataTypes.DATE, type: DataTypes.DATE,
allowNull: false, allowNull: false},
}, oldUpdatedAt: {
old_updated_at: {
type: DataTypes.DATE, type: DataTypes.DATE,
allowNull: false, allowNull: false}}, {
},
}, {
sequelize, sequelize,
modelName: 'DiaryHistory', modelName: 'DiaryHistory',
tableName: 'diary_history', tableName: 'diary_history',
schema: 'community', schema: 'community',
timestamps: false, timestamps: false,
underscored: true, underscored: true});
,
freezeTableName: true});
export default DiaryHistory; export default DiaryHistory;

View File

@@ -5,30 +5,22 @@ import UserParamVisibilityType from '../type/user_param_visibility.js';
const Folder = sequelize.define('folder', { const Folder = sequelize.define('folder', {
name: { name: {
type: DataTypes.STRING, type: DataTypes.STRING,
allowNull: false, allowNull: false},
}, parentId: {
parent_id: {
type: DataTypes.INTEGER, type: DataTypes.INTEGER,
allowNull: true, allowNull: true,
references: { references: {
model: 'folder', model: 'folder',
key: 'id', key: 'id'}},
}, userId: {
},
user_id: {
type: DataTypes.INTEGER, type: DataTypes.INTEGER,
allowNull: false, allowNull: false,
references: { references: {
model: 'user', model: 'user',
key: 'id', key: 'id'}}}, {
},
},
}, {
tableName: 'folder', tableName: 'folder',
schema: 'community', schema: 'community',
underscored: true, underscored: true,
timestamps: true, timestamps: true});
,
freezeTableName: true});
export default Folder; export default Folder;

View File

@@ -8,7 +8,7 @@ const FolderImageVisibility = sequelize.define('folder_image_visibility', {
primaryKey: true, primaryKey: true,
allowNull: false allowNull: false
}, },
folder_id: { folderId: {
type: DataTypes.INTEGER, type: DataTypes.INTEGER,
allowNull: false, allowNull: false,
references: { references: {
@@ -16,7 +16,7 @@ const FolderImageVisibility = sequelize.define('folder_image_visibility', {
key: 'id' key: 'id'
} }
}, },
visibility_type_id: { visibilityTypeId: {
type: DataTypes.INTEGER, type: DataTypes.INTEGER,
allowNull: false, allowNull: false,
references: { references: {
@@ -31,8 +31,6 @@ const FolderImageVisibility = sequelize.define('folder_image_visibility', {
tableName: 'folder_image_visibility', tableName: 'folder_image_visibility',
schema: 'community', schema: 'community',
timestamps: false, timestamps: false,
underscored: true, underscored: true});
,
freezeTableName: true});
export default FolderImageVisibility; export default FolderImageVisibility;

View File

@@ -8,7 +8,7 @@ const FolderVisibilityUser = sequelize.define('folder_visibility_user', {
primaryKey: true, primaryKey: true,
allowNull: false allowNull: false
}, },
folder_id: { folderId: {
type: DataTypes.INTEGER, type: DataTypes.INTEGER,
allowNull: false, allowNull: false,
references: { references: {
@@ -16,7 +16,7 @@ const FolderVisibilityUser = sequelize.define('folder_visibility_user', {
key: 'id' key: 'id'
} }
}, },
visibility_user_id: { visibilityUserId: {
type: DataTypes.INTEGER, type: DataTypes.INTEGER,
allowNull: false, allowNull: false,
references: { references: {
@@ -28,8 +28,6 @@ const FolderVisibilityUser = sequelize.define('folder_visibility_user', {
tableName: 'folder_visibility_user', tableName: 'folder_visibility_user',
schema: 'community', schema: 'community',
timestamps: false, timestamps: false,
underscored: true, underscored: true});
,
freezeTableName: true});
export default FolderVisibilityUser; export default FolderVisibilityUser;

View File

@@ -31,8 +31,6 @@ const Friendship = sequelize.define('friendship', {
tableName: 'friendship', tableName: 'friendship',
schema: 'community', schema: 'community',
underscored: true, underscored: true,
timestamps: true, timestamps: true});
,
freezeTableName: true});
export default Friendship; export default Friendship;

View File

@@ -7,9 +7,8 @@ const GuestbookEntry = sequelize.define('guestbook_entry', {
type: DataTypes.INTEGER, type: DataTypes.INTEGER,
autoIncrement: true, autoIncrement: true,
primaryKey: true, primaryKey: true,
allowNull: false, allowNull: false},
}, recipientId: {
recipient_id: {
type: DataTypes.INTEGER, type: DataTypes.INTEGER,
allowNull: false, allowNull: false,
references: { references: {
@@ -17,7 +16,7 @@ const GuestbookEntry = sequelize.define('guestbook_entry', {
key: 'id' key: 'id'
} }
}, },
sender_id: { senderId: {
type: DataTypes.INTEGER, type: DataTypes.INTEGER,
allowNull: true, allowNull: true,
references: { references: {
@@ -25,24 +24,18 @@ const GuestbookEntry = sequelize.define('guestbook_entry', {
key: 'id' key: 'id'
} }
}, },
sender_username: { senderUsername: {
type: DataTypes.STRING, type: DataTypes.STRING,
allowNull: true, allowNull: true},
}, contentHtml: {
content_html: {
type: DataTypes.TEXT, type: DataTypes.TEXT,
allowNull: false, allowNull: false},
}, imageUrl: {
image_url: {
type: DataTypes.STRING, type: DataTypes.STRING,
allowNull: true, allowNull: true}}, {
},
}, {
tableName: 'guestbook_entry', tableName: 'guestbook_entry',
schema: 'community', schema: 'community',
timestamps: true, timestamps: true,
underscored: true, underscored: true});
,
freezeTableName: true});
export default GuestbookEntry; export default GuestbookEntry;

View File

@@ -5,43 +5,32 @@ import UserParamVisibilityType from '../type/user_param_visibility.js';
const Image = sequelize.define('image', { const Image = sequelize.define('image', {
title: { title: {
type: DataTypes.STRING, type: DataTypes.STRING,
allowNull: false, allowNull: false},
},
description: { description: {
type: DataTypes.TEXT, type: DataTypes.TEXT,
allowNull: true, allowNull: true},
}, originalFileName: {
original_file_name: {
type: DataTypes.STRING, type: DataTypes.STRING,
allowNull: false, allowNull: false},
},
hash: { hash: {
type: DataTypes.STRING, type: DataTypes.STRING,
allowNull: false, allowNull: false,
unique: true, unique: true},
}, folderId: {
folder_id: {
type: DataTypes.INTEGER, type: DataTypes.INTEGER,
allowNull: false, allowNull: false,
references: { references: {
model: 'folder', model: 'folder',
key: 'id', key: 'id'}},
}, userId: {
},
user_id: {
type: DataTypes.INTEGER, type: DataTypes.INTEGER,
allowNull: false, allowNull: false,
references: { references: {
model: 'user', model: 'user',
key: 'id', key: 'id'}}}, {
},
},
}, {
tableName: 'image', tableName: 'image',
schema: 'community', schema: 'community',
underscored: true, underscored: true,
timestamps: true, timestamps: true});
,
freezeTableName: true});
export default Image; export default Image;

View File

@@ -8,7 +8,7 @@ const ImageImageVisibility = sequelize.define('image_image_visibility', {
primaryKey: true, primaryKey: true,
allowNull: false allowNull: false
}, },
image_id: { imageId: {
type: DataTypes.INTEGER, type: DataTypes.INTEGER,
allowNull: false, allowNull: false,
references: { references: {
@@ -16,7 +16,7 @@ const ImageImageVisibility = sequelize.define('image_image_visibility', {
key: 'id' key: 'id'
} }
}, },
visibility_type_id: { visibilityTypeId: {
type: DataTypes.INTEGER, type: DataTypes.INTEGER,
allowNull: false, allowNull: false,
references: { references: {
@@ -31,8 +31,6 @@ const ImageImageVisibility = sequelize.define('image_image_visibility', {
tableName: 'image_image_visibility', tableName: 'image_image_visibility',
schema: 'community', schema: 'community',
timestamps: false, timestamps: false,
underscored: true, underscored: true});
,
freezeTableName: true});
export default ImageImageVisibility; export default ImageImageVisibility;

View File

@@ -8,11 +8,11 @@ const ImageVisibilityUser = sequelize.define('image_visibility_user', {
primaryKey: true, primaryKey: true,
allowNull: false allowNull: false
}, },
image_id: { imageId: {
type: DataTypes.INTEGER, type: DataTypes.INTEGER,
allowNull: false allowNull: false
}, },
user_id: { userId: {
type: DataTypes.INTEGER, type: DataTypes.INTEGER,
allowNull: false allowNull: false
} }
@@ -21,7 +21,6 @@ const ImageVisibilityUser = sequelize.define('image_visibility_user', {
timestamps: false, timestamps: false,
underscored: true, underscored: true,
schema: 'community' schema: 'community'
, });
freezeTableName: true});
export default ImageVisibilityUser; export default ImageVisibilityUser;

View File

@@ -6,7 +6,6 @@ const interest = sequelize.define('interest_type', {
tableName: 'interest', tableName: 'interest',
schema: 'community', schema: 'community',
underscored: true underscored: true
, });
freezeTableName: true});
export default interest; export default interest;

View File

@@ -36,7 +36,7 @@ const User = sequelize.define('user', {
type: DataTypes.STRING, type: DataTypes.STRING,
allowNull: false, allowNull: false,
}, },
registration_date: { registrationDate: {
type: DataTypes.DATE, type: DataTypes.DATE,
allowNull: false, allowNull: false,
defaultValue: DataTypes.NOW defaultValue: DataTypes.NOW
@@ -45,11 +45,11 @@ const User = sequelize.define('user', {
type: DataTypes.BOOLEAN, type: DataTypes.BOOLEAN,
defaultValue: false defaultValue: false
}, },
reset_token: { resetToken: {
type: DataTypes.UUID, type: DataTypes.UUID,
allowNull: true allowNull: true
}, },
hashed_id: { hashedId: {
type: DataTypes.STRING, type: DataTypes.STRING,
allowNull: true allowNull: true
}, },
@@ -57,7 +57,7 @@ const User = sequelize.define('user', {
type: DataTypes.BOOLEAN, type: DataTypes.BOOLEAN,
defaultValue: true defaultValue: true
}, },
auth_code: { authCode: {
type: DataTypes.STRING, type: DataTypes.STRING,
allowNull: true allowNull: true
} }
@@ -70,8 +70,7 @@ const User = sequelize.define('user', {
const hashedId = crypto.createHash('sha256').update(user.id.toString()).digest('hex'); const hashedId = crypto.createHash('sha256').update(user.id.toString()).digest('hex');
user.hashedId = hashedId; user.hashedId = hashedId;
await user.save(); await user.save();
, },
freezeTableName: true}
} }
}); });

View File

@@ -5,7 +5,7 @@ import UserParamType from '../type/user_param.js';
import { encrypt, decrypt } from '../../utils/encryption.js'; import { encrypt, decrypt } from '../../utils/encryption.js';
const UserParam = sequelize.define('user_param', { const UserParam = sequelize.define('user_param', {
user_id: { userId: {
type: DataTypes.INTEGER, type: DataTypes.INTEGER,
allowNull: false, allowNull: false,
references: { references: {
@@ -13,7 +13,7 @@ const UserParam = sequelize.define('user_param', {
key: 'id', key: 'id',
}, },
}, },
param_type_id: { paramTypeId: {
type: DataTypes.INTEGER, type: DataTypes.INTEGER,
allowNull: false, allowNull: false,
references: { references: {
@@ -54,9 +54,8 @@ const UserParam = sequelize.define('user_param', {
indexes: [ indexes: [
{ {
unique: true, unique: true,
fields: ['user_id', 'param_type_id'], fields: ['userId', 'paramTypeId'],
, }
freezeTableName: true},
], ],
}); });

View File

@@ -8,7 +8,7 @@ const UserParamVisibility = sequelize.define('user_param_visibility', {
primaryKey: true, primaryKey: true,
allowNull: false allowNull: false
}, },
param_id: { paramId: {
type: DataTypes.INTEGER, type: DataTypes.INTEGER,
allowNull: false allowNull: false
}, },
@@ -21,7 +21,6 @@ const UserParamVisibility = sequelize.define('user_param_visibility', {
timestamps: false, timestamps: false,
underscored: true, underscored: true,
schema: 'community' schema: 'community'
, });
freezeTableName: true});
export default UserParamVisibility; export default UserParamVisibility;

View File

@@ -4,7 +4,7 @@ import User from './user.js';
import UserRightType from '../type/user_right.js'; import UserRightType from '../type/user_right.js';
const UserRight = sequelize.define('user_right', { const UserRight = sequelize.define('user_right', {
user_id: { userId: {
type: DataTypes.INTEGER, type: DataTypes.INTEGER,
allowNull: false, allowNull: false,
references: { references: {
@@ -12,19 +12,16 @@ const UserRight = sequelize.define('user_right', {
key: 'id' key: 'id'
} }
}, },
right_type_id: { rightTypeId: {
type: DataTypes.INTEGER, type: DataTypes.INTEGER,
allowNull: false, allowNull: false,
references: { references: {
model: UserRightType, model: UserRightType,
key: 'id' key: 'id'
} }
}, }}, {
}, {
tableName: 'user_right', tableName: 'user_right',
schema: 'community', schema: 'community',
underscored: true, underscored: true});
,
freezeTableName: true});
export default UserRight; export default UserRight;

View File

@@ -4,19 +4,15 @@ import { sequelize } from '../../../utils/sequelize.js';
class Branch extends Model { } class Branch extends Model { }
Branch.init({ Branch.init({
branch_type_id: { branchTypeId: {
type: DataTypes.INTEGER, type: DataTypes.INTEGER,
allowNull: false, allowNull: false},
}, regionId: {
region_id: {
type: DataTypes.INTEGER, type: DataTypes.INTEGER,
allowNull: false, allowNull: false},
}, falukantUserId: {
falukant_user_id: {
type: DataTypes.INTEGER, type: DataTypes.INTEGER,
allowNull: false, allowNull: false}}, {
},
}, {
sequelize, sequelize,
modelName: 'Branch', modelName: 'Branch',
tableName: 'branch', tableName: 'branch',
@@ -26,10 +22,8 @@ Branch.init({
indexes: [ indexes: [
{ {
unique: true, unique: true,
fields: ['region_id', 'falukant_user_id'] fields: ['regionId', 'falukantUserId']
, }
freezeTableName: true} ]});
],
});
export default Branch; export default Branch;

View File

@@ -4,38 +4,35 @@ import { sequelize } from '../../../utils/sequelize.js';
class BuyableHouse extends Model { } class BuyableHouse extends Model { }
BuyableHouse.init({ BuyableHouse.init({
roof_condition: { roofCondition: {
type: DataTypes.INTEGER, type: DataTypes.INTEGER,
allowNull: false, allowNull: false,
defaultValue: 100 defaultValue: 100
}, },
floor_condition: { floorCondition: {
type: DataTypes.INTEGER, type: DataTypes.INTEGER,
allowNull: false, allowNull: false,
defaultValue: 100 defaultValue: 100
}, },
wall_condition: { wallCondition: {
type: DataTypes.INTEGER, type: DataTypes.INTEGER,
allowNull: false, allowNull: false,
defaultValue: 100 defaultValue: 100
}, },
window_condition: { windowCondition: {
type: DataTypes.INTEGER, type: DataTypes.INTEGER,
allowNull: false, allowNull: false,
defaultValue: 100 defaultValue: 100
}, },
house_type_id: { houseTypeId: {
type: DataTypes.INTEGER, type: DataTypes.INTEGER,
allowNull: false, allowNull: false}
}
}, { }, {
sequelize, sequelize,
modelName: 'BuyableHouse', modelName: 'BuyableHouse',
tableName: 'buyable_house', tableName: 'buyable_house',
schema: 'falukant_data', schema: 'falukant_data',
timestamps: false, timestamps: false,
underscored: true, underscored: true});
,
freezeTableName: true});
export default BuyableHouse; export default BuyableHouse;

View File

@@ -4,26 +4,20 @@ import { sequelize } from '../../../utils/sequelize.js';
class BuyableStock extends Model { } class BuyableStock extends Model { }
BuyableStock.init({ BuyableStock.init({
region_id: { regionId: {
type: DataTypes.INTEGER, type: DataTypes.INTEGER,
allowNull: false, allowNull: false},
}, stockTypeId: {
stock_type_id: {
type: DataTypes.INTEGER, type: DataTypes.INTEGER,
allowNull: false, allowNull: false},
},
quantity: { quantity: {
type: DataTypes.INTEGER, type: DataTypes.INTEGER,
allowNull: false, allowNull: false}}, {
},
}, {
sequelize, sequelize,
modelName: 'BuyableStock', modelName: 'BuyableStock',
tableName: 'buyable_stock', tableName: 'buyable_stock',
schema: 'falukant_data', schema: 'falukant_data',
timestamps: false, timestamps: false,
underscored: true, underscored: true});
,
freezeTableName: true});
export default BuyableStock; export default BuyableStock;

View File

@@ -8,24 +8,18 @@ Candidate.init({
id: { id: {
type: DataTypes.INTEGER, type: DataTypes.INTEGER,
primaryKey: true, primaryKey: true,
autoIncrement: true, autoIncrement: true},
}, electionId: {
election_id: {
type: DataTypes.INTEGER, type: DataTypes.INTEGER,
allowNull: false, allowNull: false},
}, characterId: {
character_id: {
type: DataTypes.INTEGER, type: DataTypes.INTEGER,
allowNull: false, allowNull: false}}, {
},
}, {
sequelize, sequelize,
modelName: 'Candidate', modelName: 'Candidate',
tableName: 'candidate', tableName: 'candidate',
schema: 'falukant_data', schema: 'falukant_data',
timestamps: true, timestamps: true,
underscored: true, underscored: true});
,
freezeTableName: true});
export default Candidate; export default Candidate;

View File

@@ -5,44 +5,35 @@ class FalukantCharacter extends Model {}
FalukantCharacter.init( FalukantCharacter.init(
{ {
user_id: { userId: {
type: DataTypes.INTEGER, type: DataTypes.INTEGER,
allowNull: true, allowNull: true},
}, regionId: {
region_id: {
type: DataTypes.INTEGER, type: DataTypes.INTEGER,
allowNull: false, allowNull: false},
}, firstName: {
first_name: {
type: DataTypes.INTEGER, type: DataTypes.INTEGER,
allowNull: false, allowNull: false},
}, lastName: {
last_name: {
type: DataTypes.INTEGER, type: DataTypes.INTEGER,
allowNull: false, allowNull: false},
},
birthdate: { birthdate: {
type: DataTypes.DATE, type: DataTypes.DATE,
allowNull: false, allowNull: false,
defaultValue: DataTypes.NOW, defaultValue: DataTypes.NOW},
},
gender: { gender: {
type: DataTypes.STRING, type: DataTypes.STRING},
},
health: { health: {
type: DataTypes.INTEGER, type: DataTypes.INTEGER,
allowNull: false, allowNull: false,
defaultValue: 100, defaultValue: 100},
}, titleOfNobility: {
title_of_nobility: { type: DataTypes.INTEGER,
allowNull: false},
moodId: {
type: DataTypes.INTEGER, type: DataTypes.INTEGER,
allowNull: false, allowNull: false,
}, defaultValue: 1}
mood_id: {
type: DataTypes.INTEGER,
allowNull: false,
defaultValue: 1,
}
}, },
{ {
sequelize, sequelize,
@@ -50,9 +41,7 @@ FalukantCharacter.init(
tableName: 'character', tableName: 'character',
schema: 'falukant_data', schema: 'falukant_data',
timestamps: true, timestamps: true,
underscored: true, underscored: true}
,
freezeTableName: true}
); );
export default FalukantCharacter; export default FalukantCharacter;

View File

@@ -5,46 +5,38 @@ class ChildRelation extends Model {}
ChildRelation.init( ChildRelation.init(
{ {
father_character_id: { fatherCharacterId: {
type: DataTypes.INTEGER, type: DataTypes.INTEGER,
allowNull: false, allowNull: false},
}, motherCharacterId: {
mother_character_id: {
type: DataTypes.INTEGER, type: DataTypes.INTEGER,
allowNull: false, allowNull: false},
}, childCharacterId: {
child_character_id: {
type: DataTypes.INTEGER, type: DataTypes.INTEGER,
allowNull: false, allowNull: false},
}, fatherName: {
father_name: {
type: DataTypes.STRING, type: DataTypes.STRING,
allowNull: false, allowNull: false},
}, motherName: {
mother_name: {
type: DataTypes.STRING, type: DataTypes.STRING,
allowNull: false, allowNull: false},
}, nameSet: {
name_set: {
type: DataTypes.BOOLEAN, type: DataTypes.BOOLEAN,
allowNull: false, allowNull: false,
default: false, default: false},
}, isHeir: {
is_heir: {
type: DataTypes.BOOLEAN, type: DataTypes.BOOLEAN,
allowNull: true, allowNull: true,
default: false, default: false}
}
}, },
{ {
sequelize, sequelize,
modelName: 'ChildRelation', modelName: 'ChildRelation',
tableName: 'child_relation', // exakter Tabellenname tableName: 'child_relation', // exakter Tabellenname
schema: 'falukant_data', // exaktes Schema schema: 'falukant_data', // exaktes Schema
freezeTableName: true, // keine Pluralisierung // keine Pluralisierung
timestamps: true, timestamps: true,
underscored: true, underscored: true}
}
); );
export default ChildRelation; export default ChildRelation;

View File

@@ -8,31 +8,24 @@ Credit.init({
// aufgenommener Kredit-Betrag // aufgenommener Kredit-Betrag
amount: { amount: {
type: DataTypes.DECIMAL(14,2), type: DataTypes.DECIMAL(14,2),
allowNull: false, allowNull: false},
},
// noch offener Kreditbetrag // noch offener Kreditbetrag
remaining_amount: { remainingAmount: {
type: DataTypes.DECIMAL(14,2), type: DataTypes.DECIMAL(14,2),
allowNull: false, allowNull: false},
},
// Zinssatz als Prozentsatz (z.B. 3.5 für 3.5%) // Zinssatz als Prozentsatz (z.B. 3.5 für 3.5%)
interest_rate: { interestRate: {
type: DataTypes.DECIMAL(5,2), type: DataTypes.DECIMAL(5,2),
allowNull: false, allowNull: false},
},
// Verknüpfung auf FalukantUser // Verknüpfung auf FalukantUser
falukant_user_id: { falukantUserId: {
type: DataTypes.INTEGER, type: DataTypes.INTEGER,
allowNull: false, allowNull: false}}, {
},
}, {
sequelize, sequelize,
modelName: 'Credit', modelName: 'Credit',
tableName: 'credit', tableName: 'credit',
schema: 'falukant_data', schema: 'falukant_data',
timestamps: true, timestamps: true,
underscored: true, underscored: true});
,
freezeTableName: true});
export default Credit; export default Credit;

View File

@@ -5,18 +5,14 @@ class DebtorsPrism extends Model {}
DebtorsPrism.init({ DebtorsPrism.init({
// Verknüpfung auf FalukantCharacter // Verknüpfung auf FalukantCharacter
character_id: { characterId: {
type: DataTypes.INTEGER, type: DataTypes.INTEGER,
allowNull: false, allowNull: false}}, {
},
}, {
sequelize, sequelize,
modelName: 'DebtorsPrism', modelName: 'DebtorsPrism',
tableName: 'debtors_prism', tableName: 'debtors_prism',
schema: 'falukant_data', schema: 'falukant_data',
timestamps: true, timestamps: true,
underscored: true, underscored: true});
,
freezeTableName: true});
export default DebtorsPrism; export default DebtorsPrism;

View File

@@ -4,39 +4,32 @@ import { sequelize } from '../../../utils/sequelize.js';
class Director extends Model { } class Director extends Model { }
Director.init({ Director.init({
director_character_id: { directorCharacterId: {
type: DataTypes.INTEGER, type: DataTypes.INTEGER,
allowNull: false, allowNull: false},
}, employerUserId: {
employer_user_id: {
type: DataTypes.INTEGER, type: DataTypes.INTEGER,
allowNull: false, allowNull: false},
},
income: { income: {
type: DataTypes.INTEGER, type: DataTypes.INTEGER,
allowNull: false, allowNull: false},
},
satisfaction: { satisfaction: {
type: DataTypes.INTEGER, type: DataTypes.INTEGER,
allowNull: false, allowNull: false,
defaultValue: 100, defaultValue: 100},
}, mayProduce: {
may_produce: {
type: DataTypes.BOOLEAN, type: DataTypes.BOOLEAN,
allowNull: false, allowNull: false,
defaultValue: true, defaultValue: true},
}, maySell: {
may_sell: {
type: DataTypes.BOOLEAN, type: DataTypes.BOOLEAN,
allowNull: false, allowNull: false,
defaultValue: true, defaultValue: true},
}, mayStartTransport: {
may_start_transport: {
type: DataTypes.BOOLEAN, type: DataTypes.BOOLEAN,
allowNull: false, allowNull: false,
defaultValue: true, defaultValue: true},
}, lastSalaryPayout: {
last_salary_payout: {
type: DataTypes.DATE, type: DataTypes.DATE,
allowNull: false, allowNull: false,
defaultValue: new Date(0) defaultValue: new Date(0)
@@ -47,8 +40,6 @@ Director.init({
tableName: 'director', tableName: 'director',
schema: 'falukant_data', schema: 'falukant_data',
timestamps: false, timestamps: false,
underscored: true, underscored: true});
,
freezeTableName: true});
export default Director; export default Director;

View File

@@ -4,26 +4,20 @@ import { sequelize } from '../../../utils/sequelize.js';
class DirectorProposal extends Model { } class DirectorProposal extends Model { }
DirectorProposal.init({ DirectorProposal.init({
director_character_id: { directorCharacterId: {
type: DataTypes.INTEGER, type: DataTypes.INTEGER,
allowNull: false, allowNull: false},
}, employerUserId: {
employer_user_id: {
type: DataTypes.INTEGER, type: DataTypes.INTEGER,
allowNull: false, allowNull: false},
}, proposedIncome: {
proposed_income: {
type: DataTypes.INTEGER, type: DataTypes.INTEGER,
allowNull: false, allowNull: false}}, {
},
}, {
sequelize, sequelize,
modelName: 'DirectorProposal', modelName: 'DirectorProposal',
tableName: 'director_proposal', tableName: 'director_proposal',
schema: 'falukant_data', schema: 'falukant_data',
timestamps: true, timestamps: true,
underscored: true, underscored: true});
,
freezeTableName: true});
export default DirectorProposal; export default DirectorProposal;

View File

@@ -8,32 +8,25 @@ Election.init({
id: { id: {
type: DataTypes.INTEGER, type: DataTypes.INTEGER,
primaryKey: true, primaryKey: true,
autoIncrement: true, autoIncrement: true},
}, officeTypeId: {
office_type_id: {
type: DataTypes.INTEGER, type: DataTypes.INTEGER,
allowNull: true, allowNull: true},
}, regionId: {
region_id: {
type: DataTypes.INTEGER, type: DataTypes.INTEGER,
allowNull: false allowNull: false
}, },
date: { date: {
type: DataTypes.DATE, type: DataTypes.DATE,
allowNull: false, allowNull: false},
}, postsToFill: {
posts_to_fill: {
type: DataTypes.INTEGER, type: DataTypes.INTEGER,
allowNull: false, allowNull: false}}, {
},
}, {
sequelize, sequelize,
modelName: 'Election', modelName: 'Election',
tableName: 'election', tableName: 'election',
schema: 'falukant_data', schema: 'falukant_data',
timestamps: true, timestamps: true,
underscored: true, underscored: true});
,
freezeTableName: true});
export default Election; export default Election;

View File

@@ -8,28 +8,21 @@ ElectionResult.init({
id: { id: {
type: DataTypes.INTEGER, type: DataTypes.INTEGER,
primaryKey: true, primaryKey: true,
autoIncrement: true, autoIncrement: true},
}, electionId: {
election_id: {
type: DataTypes.INTEGER, type: DataTypes.INTEGER,
allowNull: false, allowNull: false},
}, candidateId: {
candidate_id: {
type: DataTypes.INTEGER, type: DataTypes.INTEGER,
allowNull: false, allowNull: false},
}, votesReceived: {
votes_received: {
type: DataTypes.INTEGER, type: DataTypes.INTEGER,
allowNull: false, allowNull: false}}, {
},
}, {
sequelize, sequelize,
modelName: 'ElectionResult', modelName: 'ElectionResult',
tableName: 'election_result', tableName: 'election_result',
schema: 'falukant_data', schema: 'falukant_data',
timestamps: true, timestamps: true,
underscored: true, underscored: true});
,
freezeTableName: true});
export default ElectionResult; export default ElectionResult;

View File

@@ -5,24 +5,19 @@ class FalukantCharacterTrait extends Model {}
FalukantCharacterTrait.init( FalukantCharacterTrait.init(
{ {
character_id: { characterId: {
type: DataTypes.INTEGER, type: DataTypes.INTEGER,
allowNull: false, allowNull: false},
}, traitId: {
trait_id: {
type: DataTypes.INTEGER, type: DataTypes.INTEGER,
allowNull: false, allowNull: false}},
},
},
{ {
sequelize, sequelize,
modelName: 'FalukantCharacterTrait', modelName: 'FalukantCharacterTrait',
tableName: 'falukant_character_trait', tableName: 'falukant_character_trait',
schema: 'falukant_data', schema: 'falukant_data',
timestamps: false, timestamps: false,
underscored: true, underscored: true}
,
freezeTableName: true}
); );
export default FalukantCharacterTrait; export default FalukantCharacterTrait;

View File

@@ -4,35 +4,28 @@ import { sequelize } from '../../../utils/sequelize.js';
class Inventory extends Model { } class Inventory extends Model { }
Inventory.init({ Inventory.init({
stock_id: { stockId: {
type: DataTypes.INTEGER, type: DataTypes.INTEGER,
allowNull: false, allowNull: false},
}, productId: {
product_id: {
type: DataTypes.INTEGER, type: DataTypes.INTEGER,
allowNull: false, allowNull: false},
},
quantity: { quantity: {
type: DataTypes.INTEGER, type: DataTypes.INTEGER,
allowNull: false, allowNull: false},
},
quality: { quality: {
type: DataTypes.INTEGER, type: DataTypes.INTEGER,
allowNull: false, allowNull: false},
}, producedAt: {
produced_at: {
type: DataTypes.DATE, type: DataTypes.DATE,
allowNull: false, allowNull: false,
defaultValue: DataTypes.NOW, defaultValue: DataTypes.NOW}
}
}, { }, {
sequelize, sequelize,
modelName: 'Inventory', modelName: 'Inventory',
tableName: 'inventory', tableName: 'inventory',
schema: 'falukant_data', schema: 'falukant_data',
timestamps: false, timestamps: false,
underscored: true, underscored: true});
,
freezeTableName: true});
export default Inventory; export default Inventory;

View File

@@ -5,35 +5,29 @@ class Learning extends Model {}
Learning.init( Learning.init(
{ {
learning_recipient_id: { learningRecipientId: {
type: DataTypes.INTEGER, type: DataTypes.INTEGER,
allowNull: false, allowNull: false},
}, productId: {
product_id: {
type: DataTypes.INTEGER, type: DataTypes.INTEGER,
allowNull: true, allowNull: true,
defaultValue: null, defaultValue: null},
}, learnAllProducts: {
learn_all_products: {
type: DataTypes.BOOLEAN, type: DataTypes.BOOLEAN,
allowNull: false, allowNull: false,
defaultValue: false, defaultValue: false},
}, associatedFalukantUserId: {
associated_falukant_user_id: {
type: DataTypes.INTEGER, type: DataTypes.INTEGER,
allowNull: true, allowNull: true,
defaultValue: null, defaultValue: null},
}, associatedLearningCharacterId: {
associated_learning_character_id: {
type: DataTypes.INTEGER, type: DataTypes.INTEGER,
allowNull: true, allowNull: true,
defaultValue: null, defaultValue: null},
}, learningIsExecuted: {
learning_is_executed: {
type: DataTypes.BOOLEAN, type: DataTypes.BOOLEAN,
allowNull: false, allowNull: false,
defaultValue: false, defaultValue: false}
}
}, },
{ {
sequelize, sequelize,
@@ -41,9 +35,7 @@ Learning.init(
tableName: 'learning', tableName: 'learning',
schema: 'falukant_data', schema: 'falukant_data',
timestamps: true, timestamps: true,
underscored: true, underscored: true}
,
freezeTableName: true}
); );
export default Learning; export default Learning;

View File

@@ -5,31 +5,25 @@ class MarriageProposal extends Model {}
MarriageProposal.init( MarriageProposal.init(
{ {
requester_character_id: { requesterCharacterId: {
type: DataTypes.INTEGER, type: DataTypes.INTEGER,
allowNull: false, allowNull: false,
onDelete: 'CASCADE', onDelete: 'CASCADE'},
}, proposedCharacterId: {
proposed_character_id: {
type: DataTypes.INTEGER, type: DataTypes.INTEGER,
allowNull: false, allowNull: false,
onDelete: 'CASCADE', onDelete: 'CASCADE'},
},
cost: { cost: {
type: DataTypes.FLOAT, type: DataTypes.FLOAT,
allowNull: false, allowNull: false,
defaultValue: 0, defaultValue: 0}},
},
},
{ {
sequelize, sequelize,
modelName: 'MarriageProposal', modelName: 'MarriageProposal',
tableName: 'marriage_proposals', tableName: 'marriage_proposals',
schema: 'falukant_data', schema: 'falukant_data',
timestamps: true, timestamps: true,
underscored: true, underscored: true}
,
freezeTableName: true}
); );
export default MarriageProposal; export default MarriageProposal;

View File

@@ -8,24 +8,18 @@ OccupiedPoliticalOffice.init({
id: { id: {
type: DataTypes.INTEGER, type: DataTypes.INTEGER,
primaryKey: true, primaryKey: true,
autoIncrement: true, autoIncrement: true},
}, politicalOfficeId: {
political_office_id: {
type: DataTypes.INTEGER, type: DataTypes.INTEGER,
allowNull: false, allowNull: false},
}, characterId: {
character_id: {
type: DataTypes.INTEGER, type: DataTypes.INTEGER,
allowNull: false, allowNull: false}}, {
},
}, {
sequelize, sequelize,
modelName: 'OccupiedPoliticalOffice', modelName: 'OccupiedPoliticalOffice',
tableName: 'occupied_political_office', tableName: 'occupied_political_office',
schema: 'falukant_data', schema: 'falukant_data',
timestamps: true, timestamps: true,
underscored: true, underscored: true});
,
freezeTableName: true});
export default OccupiedPoliticalOffice; export default OccupiedPoliticalOffice;

View File

@@ -4,27 +4,27 @@ import { sequelize } from '../../../utils/sequelize.js';
class Party extends Model {} class Party extends Model {}
Party.init({ Party.init({
party_type_id: { partyTypeId: {
type: DataTypes.INTEGER, type: DataTypes.INTEGER,
allowNull: false, allowNull: false,
field: 'party_type_id' field: 'party_type_id'
}, },
falukant_user_id: { falukantUserId: {
type: DataTypes.INTEGER, type: DataTypes.INTEGER,
allowNull: false, allowNull: false,
field: 'falukant_user_id' field: 'falukant_user_id'
}, },
music_type_id: { musicTypeId: {
type: DataTypes.INTEGER, type: DataTypes.INTEGER,
allowNull: false, allowNull: false,
field: 'music_type' field: 'music_type'
}, },
banquette_type_id: { banquetteTypeId: {
type: DataTypes.INTEGER, type: DataTypes.INTEGER,
allowNull: false, allowNull: false,
field: 'banquette_type' field: 'banquette_type'
}, },
servant_ratio: { servantRatio: {
type: DataTypes.INTEGER, type: DataTypes.INTEGER,
allowNull: false, allowNull: false,
field: 'servant_ratio' field: 'servant_ratio'
@@ -33,15 +33,12 @@ Party.init({
type: DataTypes.FLOAT, type: DataTypes.FLOAT,
allowNull: false, allowNull: false,
defaultValue: 0 defaultValue: 0
}, }}, {
}, {
sequelize, sequelize,
modelName: 'Party', modelName: 'Party',
tableName: 'party', tableName: 'party',
schema: 'falukant_data', schema: 'falukant_data',
timestamps: true, timestamps: true,
underscored: true, underscored: true});
,
freezeTableName: true});
export default Party; export default Party;

View File

@@ -4,12 +4,12 @@ import { sequelize } from '../../../utils/sequelize.js'
class PartyInvitedNobility extends Model {} class PartyInvitedNobility extends Model {}
PartyInvitedNobility.init({ PartyInvitedNobility.init({
party_id: { partyId: {
type: DataTypes.INTEGER, type: DataTypes.INTEGER,
allowNull: false, allowNull: false,
field: 'party_id' field: 'party_id'
}, },
title_of_nobility_id: { titleOfNobilityId: {
type: DataTypes.INTEGER, type: DataTypes.INTEGER,
allowNull: false, allowNull: false,
field: 'title_of_nobility_id' field: 'title_of_nobility_id'
@@ -21,7 +21,6 @@ PartyInvitedNobility.init({
schema: 'falukant_data', schema: 'falukant_data',
timestamps: false, timestamps: false,
underscored: true underscored: true
, })
freezeTableName: true})
export default PartyInvitedNobility export default PartyInvitedNobility

View File

@@ -8,28 +8,21 @@ PoliticalOffice.init({
id: { id: {
type: DataTypes.INTEGER, type: DataTypes.INTEGER,
primaryKey: true, primaryKey: true,
autoIncrement: true, autoIncrement: true},
}, officeTypeId: {
office_type_id: {
type: DataTypes.INTEGER, type: DataTypes.INTEGER,
allowNull: false, allowNull: false},
}, characterId: {
character_id: {
type: DataTypes.INTEGER, type: DataTypes.INTEGER,
allowNull: false, allowNull: false},
}, regionId: {
region_id: {
type: DataTypes.INTEGER, type: DataTypes.INTEGER,
allowNull: false, allowNull: false}}, {
},
}, {
sequelize, sequelize,
modelName: 'PoliticalOffice', modelName: 'PoliticalOffice',
tableName: 'political_office', tableName: 'political_office',
schema: 'falukant_data', schema: 'falukant_data',
timestamps: true, timestamps: true,
underscored: true, underscored: true});
,
freezeTableName: true});
export default PoliticalOffice; export default PoliticalOffice;

View File

@@ -4,19 +4,16 @@ import { sequelize } from '../../../utils/sequelize.js';
class Knowledge extends Model { } class Knowledge extends Model { }
Knowledge.init({ Knowledge.init({
product_id: { productId: {
type: DataTypes.INTEGER, type: DataTypes.INTEGER,
allowNull: false, allowNull: false},
}, characterId: {
character_id: {
type: DataTypes.INTEGER, type: DataTypes.INTEGER,
allowNull: false, allowNull: false},
},
knowledge: { knowledge: {
type: DataTypes.INTEGER, type: DataTypes.INTEGER,
allowNull: false, allowNull: false,
defaultValue: 0, defaultValue: 0}
}
}, { }, {
sequelize, sequelize,
modelName: 'Knowledge', modelName: 'Knowledge',
@@ -27,8 +24,7 @@ Knowledge.init({
hooks: { hooks: {
beforeCreate: (knowledge) => { beforeCreate: (knowledge) => {
knowledge.knowledge = Math.floor(Math.random() * 61) + 20; knowledge.knowledge = Math.floor(Math.random() * 61) + 20;
, }
freezeTableName: true}
} }
}); });

View File

@@ -4,31 +4,25 @@ import { sequelize } from '../../../utils/sequelize.js';
class Production extends Model { } class Production extends Model { }
Production.init({ Production.init({
branch_id: { branchId: {
type: DataTypes.INTEGER, type: DataTypes.INTEGER,
allowNull: false, allowNull: false},
}, productId: {
product_id: {
type: DataTypes.INTEGER, type: DataTypes.INTEGER,
allowNull: false, allowNull: false},
},
quantity: { quantity: {
type: DataTypes.INTEGER, type: DataTypes.INTEGER,
allowNull: false, allowNull: false},
}, startTimestamp: {
start_timestamp: {
type: DataTypes.DATE, type: DataTypes.DATE,
allowNull: false, allowNull: false,
defaultValue: sequelize.literal('CURRENT_TIMESTAMP'), defaultValue: sequelize.literal('CURRENT_TIMESTAMP')}
}
}, { }, {
sequelize, sequelize,
modelName: 'Production', modelName: 'Production',
tableName: 'production', tableName: 'production',
schema: 'falukant_data', schema: 'falukant_data',
timestamps: false, timestamps: false,
underscored: true, underscored: true});
,
freezeTableName: true});
export default Production; export default Production;

View File

@@ -7,9 +7,8 @@ class RegionData extends Model { }
RegionData.init({ RegionData.init({
name: { name: {
type: DataTypes.STRING, type: DataTypes.STRING,
allowNull: false, allowNull: false},
}, regionTypeId: {
region_type_id: {
type: DataTypes.INTEGER, type: DataTypes.INTEGER,
allowNull: false, allowNull: false,
references: { references: {
@@ -18,14 +17,13 @@ RegionData.init({
schema: 'falukant_type' schema: 'falukant_type'
} }
}, },
parent_id: { parentId: {
type: DataTypes.INTEGER, type: DataTypes.INTEGER,
allowNull: true, allowNull: true,
references: { references: {
model: 'region', model: 'region',
key: 'id', key: 'id',
schema: 'falukant_data', schema: 'falukant_data'}
}
}, },
map: { map: {
type: DataTypes.JSONB, type: DataTypes.JSONB,
@@ -38,8 +36,6 @@ RegionData.init({
tableName: 'region', tableName: 'region',
schema: 'falukant_data', schema: 'falukant_data',
timestamps: false, timestamps: false,
underscored: true, underscored: true});
,
freezeTableName: true});
export default RegionData; export default RegionData;

View File

@@ -11,47 +11,36 @@ Relationship.init(
allowNull: false, allowNull: false,
references: { references: {
model: FalukantCharacter, model: FalukantCharacter,
key: 'id', key: 'id'},
}, onDelete: 'CASCADE'},
onDelete: 'CASCADE',
},
character2Id: { character2Id: {
type: DataTypes.INTEGER, type: DataTypes.INTEGER,
allowNull: false, allowNull: false,
references: { references: {
model: FalukantCharacter, model: FalukantCharacter,
key: 'id', key: 'id'},
}, onDelete: 'CASCADE'},
onDelete: 'CASCADE', relationshipTypeId: {
},
relationship_type_id: {
type: DataTypes.INTEGER, type: DataTypes.INTEGER,
allowNull: false, allowNull: false,
onDelete: 'CASCADE', onDelete: 'CASCADE'},
},
widowFirstName1: { widowFirstName1: {
type: DataTypes.STRING, type: DataTypes.STRING,
allowNull: true, allowNull: true},
},
widowFirstName2: { widowFirstName2: {
type: DataTypes.STRING, type: DataTypes.STRING,
allowNull: true, allowNull: true},
}, nextStepProgress: {
next_step_progress: {
type: DataTypes.INTEGER, type: DataTypes.INTEGER,
allowNull: true, allowNull: true,
defaultValue: 0, defaultValue: 0}},
},
},
{ {
sequelize, sequelize,
modelName: 'Relationship', modelName: 'Relationship',
tableName: 'relationship', tableName: 'relationship',
schema: 'falukant_data', schema: 'falukant_data',
timestamps: true, timestamps: true,
underscored: true, underscored: true}
,
freezeTableName: true}
); );
export default Relationship; export default Relationship;

View File

@@ -4,27 +4,22 @@ import { sequelize } from '../../../utils/sequelize.js';
class FalukantStock extends Model { } class FalukantStock extends Model { }
FalukantStock.init({ FalukantStock.init({
branch_id: { branchId: {
type: DataTypes.INTEGER, type: DataTypes.INTEGER,
allowNull: false, allowNull: false,
defaultValue: 0 defaultValue: 0
}, },
stock_type_id: { stockTypeId: {
type: DataTypes.INTEGER, type: DataTypes.INTEGER,
allowNull: false, allowNull: false},
},
quantity: { quantity: {
type: DataTypes.INTEGER, type: DataTypes.INTEGER,
allowNull: false, allowNull: false}}, {
},
}, {
sequelize, sequelize,
modelName: 'StockData', modelName: 'StockData',
tableName: 'stock', tableName: 'stock',
schema: 'falukant_data', schema: 'falukant_data',
timestamps: false, timestamps: false,
underscored: true, underscored: true});
,
freezeTableName: true});
export default FalukantStock; export default FalukantStock;

View File

@@ -4,19 +4,16 @@ import { sequelize } from '../../../utils/sequelize.js';
class TownProductWorth extends Model { } class TownProductWorth extends Model { }
TownProductWorth.init({ TownProductWorth.init({
product_id: { productId: {
type: DataTypes.INTEGER,
allowNull: false},
regionId: {
type: DataTypes.INTEGER,
allowNull: false},
worthPercent: {
type: DataTypes.INTEGER, type: DataTypes.INTEGER,
allowNull: false, allowNull: false,
}, defaultValue: 0}
region_id: {
type: DataTypes.INTEGER,
allowNull: false,
},
worth_percent: {
type: DataTypes.INTEGER,
allowNull: false,
defaultValue: 0,
}
}, { }, {
sequelize, sequelize,
modelName: 'TownProductWorth', modelName: 'TownProductWorth',
@@ -27,8 +24,7 @@ TownProductWorth.init({
hooks: { hooks: {
beforeCreate: (worthPercent) => { beforeCreate: (worthPercent) => {
worthPercent.worthPercent = Math.floor(Math.random() * 20) + 40; worthPercent.worthPercent = Math.floor(Math.random() * 20) + 40;
, }
freezeTableName: true}
} }
}); });

View File

@@ -4,34 +4,27 @@ import { sequelize } from '../../../utils/sequelize.js';
class Underground extends Model { } class Underground extends Model { }
Underground.init({ Underground.init({
underground_type_id: { undergroundTypeId: {
type: DataTypes.STRING, type: DataTypes.STRING,
allowNull: false, allowNull: false},
}, performerId: {
performer_id: {
type: DataTypes.INTEGER, type: DataTypes.INTEGER,
allowNull: false, allowNull: false},
}, victimId: {
victim_id: {
type: DataTypes.INTEGER, type: DataTypes.INTEGER,
allowNull: false, allowNull: false},
},
parameters: { parameters: {
type: DataTypes.JSON, type: DataTypes.JSON,
allowNull: true, allowNull: true},
},
result: { result: {
type: DataTypes.JSON, type: DataTypes.JSON,
allowNull: true, allowNull: true}
}
}, { }, {
sequelize, sequelize,
modelName: 'Underground', modelName: 'Underground',
tableName: 'underground', tableName: 'underground',
schema: 'falukant_data', schema: 'falukant_data',
timestamps: true, timestamps: true,
underscored: true, underscored: true});
,
freezeTableName: true});
export default Underground; export default Underground;

View File

@@ -5,7 +5,7 @@ import RegionData from './region.js';
class FalukantUser extends Model { } class FalukantUser extends Model { }
FalukantUser.init({ FalukantUser.init({
user_id: { userId: {
type: DataTypes.INTEGER, type: DataTypes.INTEGER,
allowNull: false, allowNull: false,
references: { references: {
@@ -15,34 +15,28 @@ FalukantUser.init({
}, },
key: 'id' key: 'id'
}, },
unique: true, unique: true},
},
money: { money: {
type: DataTypes.DECIMAL(10, 2), type: DataTypes.DECIMAL(10, 2),
allowNull: false, allowNull: false,
defaultValue: 0.00, defaultValue: 0.00},
}, creditAmount: {
credit_amount: {
type: DataTypes.DECIMAL(10, 2), type: DataTypes.DECIMAL(10, 2),
allowNull: false, allowNull: false,
defaultValue: 0.00, defaultValue: 0.00},
}, todayCreditTaken: {
today_credit_taken: {
type: DataTypes.DECIMAL(10, 2), type: DataTypes.DECIMAL(10, 2),
allowNull: false, allowNull: false,
defaultValue: 0.00, defaultValue: 0.00},
}, creditInterestRate: {
credit_interest_rate: {
type: DataTypes.DECIMAL(5, 2), type: DataTypes.DECIMAL(5, 2),
allowNull: false, allowNull: false,
defaultValue: 0.00, defaultValue: 0.00},
},
certificate: { certificate: {
type: DataTypes.INTEGER, type: DataTypes.INTEGER,
allowNull: false, allowNull: false,
defaultValue: 1, defaultValue: 1},
}, mainBranchRegionId: {
main_branch_region_id: {
type: DataTypes.INTEGER, type: DataTypes.INTEGER,
allowNull: true, allowNull: true,
references: { references: {
@@ -57,8 +51,6 @@ FalukantUser.init({
tableName: 'falukant_user', tableName: 'falukant_user',
schema: 'falukant_data', schema: 'falukant_data',
timestamps: true, timestamps: true,
underscored: true, underscored: true});
,
freezeTableName: true});
export default FalukantUser; export default FalukantUser;

View File

@@ -4,32 +4,32 @@ import { sequelize } from '../../../utils/sequelize.js';
class UserHouse extends Model { } class UserHouse extends Model { }
UserHouse.init({ UserHouse.init({
roof_condition: { roofCondition: {
type: DataTypes.INTEGER, type: DataTypes.INTEGER,
allowNull: false, allowNull: false,
defaultValue: 100 defaultValue: 100
}, },
floor_condition: { floorCondition: {
type: DataTypes.INTEGER, type: DataTypes.INTEGER,
allowNull: false, allowNull: false,
defaultValue: 100 defaultValue: 100
}, },
wall_condition: { wallCondition: {
type: DataTypes.INTEGER, type: DataTypes.INTEGER,
allowNull: false, allowNull: false,
defaultValue: 100 defaultValue: 100
}, },
window_condition: { windowCondition: {
type: DataTypes.INTEGER, type: DataTypes.INTEGER,
allowNull: false, allowNull: false,
defaultValue: 100 defaultValue: 100
}, },
house_type_id: { houseTypeId: {
type: DataTypes.INTEGER, type: DataTypes.INTEGER,
allowNull: false, allowNull: false,
defaultValue: 1 defaultValue: 1
}, },
user_id: { userId: {
type: DataTypes.INTEGER, type: DataTypes.INTEGER,
allowNull: false, allowNull: false,
defaultValue: 1 defaultValue: 1
@@ -40,8 +40,6 @@ UserHouse.init({
tableName: 'user_house', tableName: 'user_house',
schema: 'falukant_data', schema: 'falukant_data',
timestamps: false, timestamps: false,
underscored: true, underscored: true});
,
freezeTableName: true});
export default UserHouse; export default UserHouse;

View File

@@ -9,26 +9,20 @@ Vote.init(
id: { id: {
type: DataTypes.INTEGER, type: DataTypes.INTEGER,
primaryKey: true, primaryKey: true,
autoIncrement: true, autoIncrement: true},
}, electionId: {
election_id: {
type: DataTypes.INTEGER, type: DataTypes.INTEGER,
allowNull: false, allowNull: false},
}, candidateId: {
candidate_id: {
type: DataTypes.INTEGER, type: DataTypes.INTEGER,
allowNull: false, allowNull: false},
},
timestamp: { timestamp: {
type: DataTypes.DATE, type: DataTypes.DATE,
allowNull: false, allowNull: false,
defaultValue: DataTypes.NOW, defaultValue: DataTypes.NOW},
}, falukantUserId: {
falukant_user_id: {
type: DataTypes.INTEGER, type: DataTypes.INTEGER,
allowNull: false, allowNull: false}},
},
},
{ {
sequelize, sequelize,
modelName: 'Vote', modelName: 'Vote',
@@ -39,11 +33,8 @@ Vote.init(
indexes: [ indexes: [
{ {
unique: true, unique: true,
fields: ['election_id', 'candidate_id'], fields: ['electionId', 'candidateId']},
, ]}
freezeTableName: true},
],
}
); );
export default Vote; export default Vote;

View File

@@ -4,32 +4,26 @@ import { sequelize } from '../../../utils/sequelize.js';
class DayProduction extends Model { } class DayProduction extends Model { }
DayProduction.init({ DayProduction.init({
region_id: { regionId: {
type: DataTypes.INTEGER, type: DataTypes.INTEGER,
allowNull: false, allowNull: false},
}, productId: {
product_id: {
type: DataTypes.INTEGER, type: DataTypes.INTEGER,
allowNull: false, allowNull: false},
},
quantity: { quantity: {
type: DataTypes.INTEGER, type: DataTypes.INTEGER,
allowNull: false, allowNull: false},
}, producerId: {
producer_id: {
type: DataTypes.INTEGER, type: DataTypes.INTEGER,
allowNull: false, allowNull: false},
}, productionTimestamp: {
production_timestamp: {
type: DataTypes.DATE, type: DataTypes.DATE,
allowNull: false, allowNull: false,
defaultValue: sequelize.literal('CURRENT_TIMESTAMP'), defaultValue: sequelize.literal('CURRENT_TIMESTAMP')},
}, productionDate: {
production_date: {
type: DataTypes.DATEONLY, type: DataTypes.DATEONLY,
allowNull: false, allowNull: false,
defaultValue: sequelize.literal('CURRENT_DATE'), defaultValue: sequelize.literal('CURRENT_DATE')}
}
}, { }, {
sequelize, sequelize,
modelName: 'DayProduction', modelName: 'DayProduction',
@@ -40,9 +34,8 @@ DayProduction.init({
indexes: [ indexes: [
{ {
unique: true, unique: true,
fields: ['producer_id', 'product_id', 'region_id', 'production_date'] fields: ['producerId', 'productId', 'regionId', 'productionDate']
, }
freezeTableName: true}
] ]
}); });

View File

@@ -4,27 +4,22 @@ import { sequelize } from '../../../utils/sequelize.js';
class DaySell extends Model { } class DaySell extends Model { }
DaySell.init({ DaySell.init({
region_id: { regionId: {
type: DataTypes.INTEGER, type: DataTypes.INTEGER,
allowNull: false, allowNull: false},
}, productId: {
product_id: {
type: DataTypes.INTEGER, type: DataTypes.INTEGER,
allowNull: false, allowNull: false},
},
quantity: { quantity: {
type: DataTypes.INTEGER, type: DataTypes.INTEGER,
allowNull: false, allowNull: false},
}, sellerId: {
seller_id: {
type: DataTypes.INTEGER, type: DataTypes.INTEGER,
allowNull: false, allowNull: false},
}, sellTimestamp: {
sell_timestamp: {
type: DataTypes.DATE, type: DataTypes.DATE,
allowNull: false, allowNull: false,
defaultValue: sequelize.literal('CURRENT_TIMESTAMP'), defaultValue: sequelize.literal('CURRENT_TIMESTAMP')}
}
}, { }, {
sequelize, sequelize,
modelName: 'DaySell', modelName: 'DaySell',
@@ -35,9 +30,8 @@ DaySell.init({
indexes: [ indexes: [
{ {
unique: true, unique: true,
fields: ['seller_id', 'product_id', 'region_id'] fields: ['sellerId', 'productId', 'regionId']
, }
freezeTableName: true}
] ]
}); });

View File

@@ -4,30 +4,24 @@ import { sequelize } from '../../../utils/sequelize.js';
class ElectionHistory extends Model { } class ElectionHistory extends Model { }
ElectionHistory.init({ ElectionHistory.init({
election_id: { electionId: {
type: DataTypes.INTEGER, type: DataTypes.INTEGER,
allowNull: false, allowNull: false},
}, politicalOfficeTypeId: {
political_office_type_id: {
type: DataTypes.INTEGER, type: DataTypes.INTEGER,
allowNull: false, allowNull: false},
}, electionDate: {
election_date: {
type: DataTypes.DATE, type: DataTypes.DATE,
allowNull: false, allowNull: false},
}, electionResult: {
election_result: {
type: DataTypes.JSON, type: DataTypes.JSON,
allowNull: false, allowNull: false}
}
}, { }, {
sequelize, sequelize,
modelName: 'ElectionHistory', modelName: 'ElectionHistory',
tableName: 'election_history', tableName: 'election_history',
schema: 'falukant_log', schema: 'falukant_log',
timestamps: true, timestamps: true,
underscored: true, underscored: true});
,
freezeTableName: true});
export default ElectionHistory; export default ElectionHistory;

View File

@@ -7,21 +7,17 @@ HealthActivity.init({
id: { id: {
type: DataTypes.INTEGER, type: DataTypes.INTEGER,
primaryKey: true, primaryKey: true,
autoIncrement: true, autoIncrement: true},
}, characterId: {
character_id: {
type: DataTypes.INTEGER, type: DataTypes.INTEGER,
allowNull: false, allowNull: false},
}, activityTr: {
activity_tr: {
type: DataTypes.STRING, type: DataTypes.STRING,
allowNull: false, allowNull: false},
},
cost: { cost: {
type: DataTypes.FLOAT, type: DataTypes.FLOAT,
allowNull: false, allowNull: false},
}, successPercentage: {
success_percentage: {
type: DataTypes.INTEGER, type: DataTypes.INTEGER,
allowNull: false allowNull: false
} }
@@ -31,8 +27,6 @@ HealthActivity.init({
tableName: 'health_activity', tableName: 'health_activity',
schema: 'falukant_log', schema: 'falukant_log',
timestamps: true, timestamps: true,
underscored: true, underscored: true});
,
freezeTableName: true});
export default HealthActivity; export default HealthActivity;

View File

@@ -4,43 +4,34 @@ import { sequelize } from '../../../utils/sequelize.js';
class MoneyFlow extends Model { } class MoneyFlow extends Model { }
MoneyFlow.init({ MoneyFlow.init({
falukant_user_id: { falukantUserId: {
type: DataTypes.INTEGER, type: DataTypes.INTEGER,
allowNull: false, allowNull: false},
},
activity: { activity: {
type: DataTypes.STRING, type: DataTypes.STRING,
allowNull: false, allowNull: false},
}, moneyBefore: {
money_before: {
type: DataTypes.DOUBLE, type: DataTypes.DOUBLE,
allowNull: false, allowNull: false},
}, moneyAfter: {
money_after: {
type: DataTypes.DOUBLE, type: DataTypes.DOUBLE,
allowNull: true, allowNull: true},
},
time: { time: {
type: DataTypes.DATE, type: DataTypes.DATE,
allowNull: false, allowNull: false,
defaultValue: DataTypes.NOW defaultValue: DataTypes.NOW
}, },
change_value: { changeValue: {
type: DataTypes.DOUBLE, type: DataTypes.DOUBLE,
allowNull: false, allowNull: false},
}, changedBy: {
changed_by: {
type: DataTypes.INTEGER, type: DataTypes.INTEGER,
allowNull: true, allowNull: true}}, {
},
}, {
sequelize, sequelize,
modelName: 'MoneyFlow', modelName: 'MoneyFlow',
tableName: 'moneyflow', tableName: 'moneyflow',
schema: 'falukant_log', schema: 'falukant_log',
timestamps: false, timestamps: false,
underscored: true, underscored: true});
,
freezeTableName: true});
export default MoneyFlow; export default MoneyFlow;

View File

@@ -4,27 +4,21 @@ import { sequelize } from '../../../utils/sequelize.js';
class Notification extends Model { } class Notification extends Model { }
Notification.init({ Notification.init({
user_id: { userId: {
type: DataTypes.INTEGER, type: DataTypes.INTEGER,
allowNull: false, allowNull: false},
},
tr: { tr: {
type: DataTypes.STRING, type: DataTypes.STRING,
allowNull: false, allowNull: false},
},
shown: { shown: {
type: DataTypes.BOOLEAN, type: DataTypes.BOOLEAN,
allowNull: false, allowNull: false,
defaultValue: false, defaultValue: false}}, {
},
}, {
sequelize, sequelize,
modelName: 'Notification', modelName: 'Notification',
tableName: 'notification', tableName: 'notification',
schema: 'falukant_log', schema: 'falukant_log',
timestamps: true, timestamps: true,
underscored: true, underscored: true});
,
freezeTableName: true});
export default Notification; export default Notification;

View File

@@ -5,22 +5,18 @@ class PoliticalOfficeHistory extends Model { }
PoliticalOfficeHistory.init( PoliticalOfficeHistory.init(
{ {
character_id: { characterId: {
type: DataTypes.INTEGER, type: DataTypes.INTEGER,
allowNull: false, allowNull: false},
}, officeTypeId: {
office_type_id: {
type: DataTypes.INTEGER, type: DataTypes.INTEGER,
allowNull: false, allowNull: false},
}, startDate: {
start_date: {
type: DataTypes.DATE, type: DataTypes.DATE,
allowNull: false, allowNull: false},
}, endDate: {
end_date: {
type: DataTypes.DATE, type: DataTypes.DATE,
allowNull: false, allowNull: false}
}
}, },
{ {
sequelize, sequelize,
@@ -28,9 +24,7 @@ PoliticalOfficeHistory.init(
tableName: 'political_office_history', tableName: 'political_office_history',
schema: 'falukant_log', schema: 'falukant_log',
timestamps: true, timestamps: true,
underscored: true, underscored: true}
,
freezeTableName: true}
); );
export default PoliticalOfficeHistory; export default PoliticalOfficeHistory;

View File

@@ -4,30 +4,23 @@ import { sequelize } from '../../../utils/sequelize.js';
class PromotionalGiftLog extends Model { }; class PromotionalGiftLog extends Model { };
PromotionalGiftLog.init({ PromotionalGiftLog.init({
sender_character_id: { senderCharacterId: {
type: DataTypes.INTEGER, type: DataTypes.INTEGER,
allowNull: false, allowNull: false},
}, recipientCharacterId: {
recipient_character_id: {
type: DataTypes.INTEGER, type: DataTypes.INTEGER,
allowNull: false, allowNull: false},
}, giftId: {
gift_id: {
type: DataTypes.INTEGER, type: DataTypes.INTEGER,
allowNull: false, allowNull: false},
}, changeValue: {
change_value: {
type: DataTypes.INTEGER, type: DataTypes.INTEGER,
allowNull: false, allowNull: false}}, {
},
}, {
sequelize, sequelize,
modelName: 'PromotionalGiftLog', modelName: 'PromotionalGiftLog',
tableName: 'promotional_gift', tableName: 'promotional_gift',
schema: 'falukant_log', schema: 'falukant_log',
timestamps: true, timestamps: true,
underscored: true, underscored: true});
,
freezeTableName: true});
export default PromotionalGiftLog; export default PromotionalGiftLog;

View File

@@ -19,9 +19,7 @@ const FalukantPredefineFirstname = sequelize.define('firstname', {
{ {
unique: true, unique: true,
fields: ['name', 'gender'] fields: ['name', 'gender']
, }
freezeTableName: true} ]});
],
});
export default FalukantPredefineFirstname; export default FalukantPredefineFirstname;

View File

@@ -6,8 +6,7 @@ const FalukantPredefineLastname = sequelize.define('lastname', {
type: DataTypes.STRING, type: DataTypes.STRING,
length: 1, length: 1,
allowNull: false allowNull: false
}, }}, {
}, {
tableName: 'lastname', tableName: 'lastname',
schema: 'falukant_predefine', schema: 'falukant_predefine',
underscored: true, underscored: true,
@@ -16,9 +15,7 @@ const FalukantPredefineLastname = sequelize.define('lastname', {
{ {
unique: true, unique: true,
fields: ['name'] fields: ['name']
, }
freezeTableName: true} ]});
],
});
export default FalukantPredefineLastname; export default FalukantPredefineLastname;

View File

@@ -9,29 +9,22 @@ PoliticalOfficeBenefit.init({
id: { id: {
type: DataTypes.INTEGER, type: DataTypes.INTEGER,
primaryKey: true, primaryKey: true,
autoIncrement: true, autoIncrement: true},
}, politicalOfficeId: {
political_office_id: {
type: DataTypes.INTEGER, type: DataTypes.INTEGER,
allowNull: false, allowNull: false},
}, benefitTypeId: {
benefit_type_id: {
type: DataTypes.INTEGER, type: DataTypes.INTEGER,
allowNull: false, allowNull: false},
},
value: { value: {
type: DataTypes.JSONB, type: DataTypes.JSONB,
allowNull: false, allowNull: false}}, {
},
}, {
sequelize, sequelize,
modelName: 'PoliticalOfficeBenefit', modelName: 'PoliticalOfficeBenefit',
tableName: 'political_office_benefit', tableName: 'political_office_benefit',
schema: 'falukant_predefine', schema: 'falukant_predefine',
timestamps: false, timestamps: false,
underscored: true, underscored: true});
,
freezeTableName: true});
// Association // Association
PoliticalOfficeBenefit.belongsTo(PoliticalOfficeBenefitType, { PoliticalOfficeBenefit.belongsTo(PoliticalOfficeBenefitType, {

View File

@@ -9,27 +9,22 @@ PoliticalOfficePrerequisite.init({
id: { id: {
type: DataTypes.INTEGER, type: DataTypes.INTEGER,
primaryKey: true, primaryKey: true,
autoIncrement: true, autoIncrement: true},
},
// Neu: Feld heißt jetzt eindeutig "office_type_id" // Neu: Feld heißt jetzt eindeutig "office_type_id"
office_type_id: { officeTypeId: {
type: DataTypes.INTEGER, type: DataTypes.INTEGER,
allowNull: false, field: 'office_type_id',
}, allowNull: false},
prerequisite: { prerequisite: {
type: DataTypes.JSONB, type: DataTypes.JSONB,
allowNull: false, allowNull: false}}, {
},
}, {
sequelize, sequelize,
modelName: 'PoliticalOfficePrerequisite', modelName: 'PoliticalOfficePrerequisite',
tableName: 'political_office_prerequisite', tableName: 'political_office_prerequisite',
schema: 'falukant_predefine', schema: 'falukant_predefine',
timestamps: false, timestamps: false,
underscored: true, underscored: true});
,
freezeTableName: true});
export default PoliticalOfficePrerequisite; export default PoliticalOfficePrerequisite;

View File

@@ -7,31 +7,24 @@ class PromotionalGiftCharacterTrait extends Model {}
PromotionalGiftCharacterTrait.init( PromotionalGiftCharacterTrait.init(
{ {
gift_id: { giftId: {
type: DataTypes.INTEGER, type: DataTypes.INTEGER,
references: { field: 'gift_id',
model: PromotionalGift, references: { model: PromotionalGift, key: 'id' },
key: 'id', allowNull: false
},
allowNull: false,
}, },
trait_id: { traitId: {
type: DataTypes.INTEGER, type: DataTypes.INTEGER,
references: { field: 'trait_id',
model: CharacterTrait, references: { model: CharacterTrait, key: 'id' },
key: 'id', allowNull: false
},
allowNull: false,
}, },
suitability: { suitability: {
type: DataTypes.INTEGER, type: DataTypes.INTEGER,
allowNull: false, allowNull: false,
validate: { validate: {
min: 1, min: 1,
max: 5, max: 5}}},
},
},
},
{ {
sequelize, sequelize,
modelName: 'PromotionalGiftCharacterTrait', modelName: 'PromotionalGiftCharacterTrait',
@@ -39,8 +32,9 @@ PromotionalGiftCharacterTrait.init(
schema: 'falukant_predefine', schema: 'falukant_predefine',
timestamps: false, timestamps: false,
underscored: true, underscored: true,
, indexes: [
freezeTableName: true} { unique: true, fields: ['gift_id','trait_id'] }
]}
); );
export default PromotionalGiftCharacterTrait; export default PromotionalGiftCharacterTrait;

View File

@@ -7,31 +7,30 @@ class PromotionalGiftMood extends Model {}
PromotionalGiftMood.init( PromotionalGiftMood.init(
{ {
gift_id: { giftId: {
type: DataTypes.INTEGER, type: DataTypes.INTEGER,
field: 'gift_id',
references: { references: {
model: PromotionalGift, model: PromotionalGift,
key: 'id', key: 'id'
}, },
allowNull: false, allowNull: false
}, },
mood_id: { moodId: {
type: DataTypes.INTEGER, type: DataTypes.INTEGER,
field: 'mood_id',
references: { references: {
model: Mood, model: Mood,
key: 'id', key: 'id'
}, },
allowNull: false, allowNull: false
}, },
suitability: { suitability: {
type: DataTypes.INTEGER, type: DataTypes.INTEGER,
allowNull: false, allowNull: false,
validate: { validate: {
min: 1, min: 1,
max: 5, max: 5}}},
},
},
},
{ {
sequelize, sequelize,
modelName: 'PromotionalGiftMood', modelName: 'PromotionalGiftMood',
@@ -39,8 +38,13 @@ PromotionalGiftMood.init(
schema: 'falukant_predefine', schema: 'falukant_predefine',
timestamps: false, timestamps: false,
underscored: true, underscored: true,
, indexes: [
freezeTableName: true} {
unique: true,
fields: ['gift_id', 'mood_id']
}
]
}
); );
export default PromotionalGiftMood; export default PromotionalGiftMood;

View File

@@ -7,26 +7,20 @@ BanquetteType.init(
{ {
tr: { tr: {
type: DataTypes.STRING, type: DataTypes.STRING,
allowNull: false, allowNull: false},
},
cost: { cost: {
type: DataTypes.INTEGER, type: DataTypes.INTEGER,
allowNull: false, allowNull: false},
}, reputationGrowth: {
reputation_growth: {
type: DataTypes.INTEGER, type: DataTypes.INTEGER,
allowNull: false, allowNull: false}},
},
},
{ {
sequelize, sequelize,
modelName: 'BanquetteType', modelName: 'BanquetteType',
tableName: 'banquette', tableName: 'banquette',
schema: 'falukant_type', schema: 'falukant_type',
timestamps: false, timestamps: false,
underscored: true, underscored: true}
,
freezeTableName: true}
); );
export default BanquetteType; export default BanquetteType;

View File

@@ -4,14 +4,12 @@ import { sequelize } from '../../../utils/sequelize.js';
class BranchType extends Model { } class BranchType extends Model { }
BranchType.init({ BranchType.init({
label_tr: { labelTr: {
type: DataTypes.STRING, type: DataTypes.STRING,
allowNull: false, allowNull: false},
}, baseCost: {
base_cost: {
type: DataTypes.INTEGER, type: DataTypes.INTEGER,
allowNull: false, allowNull: false}
}
}, { }, {
sequelize, sequelize,
modelName: 'BranchType', modelName: 'BranchType',
@@ -22,10 +20,8 @@ BranchType.init({
indexes: [ indexes: [
{ {
unique: true, unique: true,
fields: ['label_tr'] fields: ['labelTr']
, }
freezeTableName: true} ]});
],
});
export default BranchType; export default BranchType;

View File

@@ -7,18 +7,14 @@ CharacterTrait.init(
{ {
tr: { tr: {
type: DataTypes.STRING, type: DataTypes.STRING,
allowNull: false, allowNull: false}},
},
},
{ {
sequelize, sequelize,
modelName: 'CharacterTrait', modelName: 'CharacterTrait',
tableName: 'character_trait', tableName: 'character_trait',
schema: 'falukant_type', schema: 'falukant_type',
timestamps: false, timestamps: false,
underscored: true, underscored: true}
,
freezeTableName: true}
); );
export default CharacterTrait; export default CharacterTrait;

View File

@@ -4,23 +4,18 @@ import { sequelize } from '../../../utils/sequelize.js';
class HouseType extends Model { } class HouseType extends Model { }
HouseType.init({ HouseType.init({
label_tr: { labelTr: {
type: DataTypes.STRING, type: DataTypes.STRING,
allowNull: false, allowNull: false},
},
cost: { cost: {
type: DataTypes.INTEGER, type: DataTypes.INTEGER,
allowNull: false, allowNull: false},
},
position: { position: {
type: DataTypes.INTEGER, type: DataTypes.INTEGER,
allowNull: false, allowNull: false},
}, minimumNobleTitle: {
minimum_noble_title: {
type: DataTypes.INTEGER, type: DataTypes.INTEGER,
allowNull: false, allowNull: false}}, {
},
}, {
sequelize, sequelize,
modelName: 'HouseType', modelName: 'HouseType',
tableName: 'house', tableName: 'house',
@@ -30,10 +25,8 @@ HouseType.init({
indexes: [ indexes: [
{ {
unique: true, unique: true,
fields: ['label_tr'] fields: ['labelTr']
, }
freezeTableName: true} ]});
],
});
export default HouseType; export default HouseType;

View File

@@ -7,18 +7,14 @@ LearnRecipient.init(
{ {
tr: { tr: {
type: DataTypes.STRING, type: DataTypes.STRING,
allowNull: false, allowNull: false}},
},
},
{ {
sequelize, sequelize,
modelName: 'LearnRecipient', modelName: 'LearnRecipient',
tableName: 'learn_recipient', tableName: 'learn_recipient',
schema: 'falukant_type', schema: 'falukant_type',
timestamps: false, timestamps: false,
underscored: true, underscored: true}
,
freezeTableName: true}
); );
export default LearnRecipient; export default LearnRecipient;

View File

@@ -5,20 +5,20 @@ class Mood extends Model {}
Mood.init( Mood.init(
{ {
id: {
type: DataTypes.INTEGER,
primaryKey: true,
autoIncrement: true},
tr: { tr: {
type: DataTypes.STRING, type: DataTypes.STRING,
allowNull: false, allowNull: false}},
},
},
{ {
sequelize, sequelize,
modelName: 'Mood', modelName: 'Mood',
tableName: 'mood', tableName: 'mood',
schema: 'falukant_type', schema: 'falukant_type',
timestamps: false, timestamps: false,
underscored: true, underscored: true}
,
freezeTableName: true}
); );
export default Mood; export default Mood;

View File

@@ -7,26 +7,20 @@ MusicType.init(
{ {
tr: { tr: {
type: DataTypes.STRING, type: DataTypes.STRING,
allowNull: false, allowNull: false},
},
cost: { cost: {
type: DataTypes.INTEGER, type: DataTypes.INTEGER,
allowNull: false, allowNull: false},
}, reputationGrowth: {
reputation_growth: {
type: DataTypes.INTEGER, type: DataTypes.INTEGER,
allowNull: false, allowNull: false}},
},
},
{ {
sequelize, sequelize,
modelName: 'MusicType', modelName: 'MusicType',
tableName: 'music', tableName: 'music',
schema: 'falukant_type', schema: 'falukant_type',
timestamps: false, timestamps: false,
underscored: true, underscored: true}
,
freezeTableName: true}
); );
export default MusicType; export default MusicType;

View File

@@ -7,21 +7,17 @@ PartyType.init(
{ {
tr: { tr: {
type: DataTypes.STRING, type: DataTypes.STRING,
allowNull: false, allowNull: false},
},
cost: { cost: {
type: DataTypes.INTEGER, type: DataTypes.INTEGER,
allowNull: false, allowNull: false},
}, forMarriage: {
for_marriage: {
type: DataTypes.BOOLEAN, type: DataTypes.BOOLEAN,
allowNull: false, allowNull: false,
defaultValue: false, defaultValue: false},
}, reputationGrowth: {
reputation_growth: {
type: DataTypes.INTEGER, type: DataTypes.INTEGER,
allowNull: false, allowNull: false}
}
}, },
{ {
sequelize, sequelize,
@@ -29,9 +25,7 @@ PartyType.init(
tableName: 'party', tableName: 'party',
schema: 'falukant_type', schema: 'falukant_type',
timestamps: false, timestamps: false,
underscored: true, underscored: true}
,
freezeTableName: true}
); );
export default PartyType; export default PartyType;

View File

@@ -8,20 +8,15 @@ PoliticalOfficeBenefitType.init({
id: { id: {
type: DataTypes.INTEGER, type: DataTypes.INTEGER,
primaryKey: true, primaryKey: true,
autoIncrement: true, autoIncrement: true},
},
tr: { tr: {
type: DataTypes.STRING, type: DataTypes.STRING,
allowNull: false, allowNull: false}}, {
},
}, {
sequelize, sequelize,
modelName: 'PoliticalOfficeBenefitType', modelName: 'PoliticalOfficeBenefitType',
tableName: 'political_office_benefit_type', tableName: 'political_office_benefit_type',
schema: 'falukant_type', schema: 'falukant_type',
timestamps: false, timestamps: false,
underscored: true, underscored: true});
,
freezeTableName: true});
export default PoliticalOfficeBenefitType; export default PoliticalOfficeBenefitType;

View File

@@ -7,33 +7,25 @@ PoliticalOfficeType.init({
id: { id: {
type: DataTypes.INTEGER, type: DataTypes.INTEGER,
primaryKey: true, primaryKey: true,
autoIncrement: true, autoIncrement: true},
},
name: { name: {
type: DataTypes.STRING, type: DataTypes.STRING,
allowNull: false, allowNull: false},
}, seatsPerRegion: {
seats_per_region: {
type: DataTypes.INTEGER, type: DataTypes.INTEGER,
allowNull: false, allowNull: false},
}, regionType: {
region_type: {
type: DataTypes.STRING, type: DataTypes.STRING,
allowNull: false, allowNull: false},
}, termLength: {
term_length: {
type: DataTypes.INTEGER, type: DataTypes.INTEGER,
allowNull: false, allowNull: false,
defaultValue: 0, defaultValue: 0}}, {
},
}, {
sequelize, sequelize,
modelName: 'PoliticalOfficeType', modelName: 'PoliticalOfficeType',
tableName: 'political_office_type', tableName: 'political_office_type',
schema: 'falukant_type', schema: 'falukant_type',
timestamps: false, timestamps: false,
underscored: true, underscored: true});
,
freezeTableName: true});
export default PoliticalOfficeType; export default PoliticalOfficeType;

View File

@@ -4,22 +4,18 @@ import { sequelize } from '../../../utils/sequelize.js';
class ProductType extends Model { } class ProductType extends Model { }
ProductType.init({ ProductType.init({
label_tr: { labelTr: {
type: DataTypes.STRING, type: DataTypes.STRING,
allowNull: false, allowNull: false},
},
category: { category: {
type: DataTypes.INTEGER, type: DataTypes.INTEGER,
allowNull: false, allowNull: false},
}, productionTime: {
production_time: {
type: DataTypes.INTEGER, type: DataTypes.INTEGER,
allowNull: false, allowNull: false},
}, sellCost: {
sell_cost: {
type: DataTypes.INTEGER, type: DataTypes.INTEGER,
allowNull: false, allowNull: false}
}
}, { }, {
sequelize, sequelize,
modelName: 'ProductType', modelName: 'ProductType',
@@ -30,10 +26,8 @@ ProductType.init({
indexes: [ indexes: [
{ {
unique: true, unique: true,
fields: ['label_tr'] fields: ['labelTr']
, }
freezeTableName: true} ]});
],
});
export default ProductType; export default ProductType;

View File

@@ -5,29 +5,27 @@ class PromotionalGift extends Model {}
PromotionalGift.init( PromotionalGift.init(
{ {
id: {
type: DataTypes.INTEGER,
primaryKey: true,
autoIncrement: true},
name: { name: {
type: DataTypes.STRING, type: DataTypes.STRING,
allowNull: false, allowNull: false},
},
description: { description: {
type: DataTypes.TEXT, type: DataTypes.TEXT,
allowNull: true, allowNull: true},
},
value: { value: {
type: DataTypes.INTEGER, type: DataTypes.INTEGER,
allowNull: false, allowNull: false,
defaultValue: 0, defaultValue: 0}},
},
},
{ {
sequelize, sequelize,
modelName: 'PromotionalGift', modelName: 'PromotionalGift',
tableName: 'promotional_gift', tableName: 'promotional_gift',
schema: 'falukant_type', schema: 'falukant_type',
timestamps: false, timestamps: false,
underscored: true, underscored: true}
,
freezeTableName: true}
); );
export default PromotionalGift; export default PromotionalGift;

View File

@@ -4,18 +4,16 @@ import { sequelize } from '../../../utils/sequelize.js';
class RegionType extends Model { } class RegionType extends Model { }
RegionType.init({ RegionType.init({
label_tr: { labelTr: {
type: DataTypes.STRING, type: DataTypes.STRING,
allowNull: false, allowNull: false},
}, parentId: {
parent_id: {
type: DataTypes.INTEGER, type: DataTypes.INTEGER,
allowNull: true, allowNull: true,
references: { references: {
model: 'region', model: 'region',
key: 'id', key: 'id',
schema: 'falukant_type', schema: 'falukant_type'}
}
} }
}, { }, {
sequelize, sequelize,
@@ -23,8 +21,6 @@ RegionType.init({
tableName: 'region', tableName: 'region',
schema: 'falukant_type', schema: 'falukant_type',
timestamps: false, timestamps: false,
underscored: true, underscored: true});
,
freezeTableName: true});
export default RegionType; export default RegionType;

View File

@@ -7,8 +7,7 @@ RelationshipType.init(
{ {
tr: { tr: {
type: DataTypes.STRING, type: DataTypes.STRING,
allowNull: false, allowNull: false}
}
}, },
{ {
sequelize, sequelize,
@@ -16,9 +15,7 @@ RelationshipType.init(
tableName: 'relationship', tableName: 'relationship',
schema: 'falukant_type', schema: 'falukant_type',
timestamps: false, timestamps: false,
underscored: true, underscored: true}
,
freezeTableName: true}
); );
export default RelationshipType; export default RelationshipType;

View File

@@ -4,23 +4,19 @@ import { sequelize } from '../../../utils/sequelize.js';
class FalukantStockType extends Model { } class FalukantStockType extends Model { }
FalukantStockType.init({ FalukantStockType.init({
label_tr: { labelTr: {
type: DataTypes.STRING, type: DataTypes.STRING,
allowNull: false, allowNull: false,
unique: true, unique: true},
},
cost: { cost: {
type: DataTypes.INTEGER, type: DataTypes.INTEGER,
allowNull: false, allowNull: false}
}
}, { }, {
sequelize, sequelize,
modelName: 'StockType', modelName: 'StockType',
tableName: 'stock', tableName: 'stock',
schema: 'falukant_type', schema: 'falukant_type',
timestamps: false, timestamps: false,
underscored: true, underscored: true});
,
freezeTableName: true});
export default FalukantStockType; export default FalukantStockType;

View File

@@ -4,23 +4,18 @@ import { sequelize } from '../../../utils/sequelize.js';
class TitleOfNobility extends Model { } class TitleOfNobility extends Model { }
TitleOfNobility.init({ TitleOfNobility.init({
label_tr: { labelTr: {
type: DataTypes.STRING, type: DataTypes.STRING,
allowNull: false, allowNull: false},
},
level: { level: {
type: DataTypes.INTEGER, type: DataTypes.INTEGER,
allowNull: false, allowNull: false,
defaultValue: 0, defaultValue: 0}}, {
},
}, {
sequelize, sequelize,
modelName: 'Title', modelName: 'Title',
tableName: 'title', tableName: 'title',
schema: 'falukant_type', schema: 'falukant_type',
timestamps: false, timestamps: false,
underscored: true, underscored: true});
,
freezeTableName: true});
export default TitleOfNobility; export default TitleOfNobility;

View File

@@ -8,21 +8,16 @@ TitleRequirement.init({
type: DataTypes.INTEGER, type: DataTypes.INTEGER,
allowNull: false, allowNull: false,
primaryKey: true, primaryKey: true,
autoIncrement: true, autoIncrement: true},
}, titleId: {
title_id: {
type: DataTypes.INTEGER, type: DataTypes.INTEGER,
allowNull: false, allowNull: false},
}, requirementType: {
requirement_type: {
type: DataTypes.STRING, type: DataTypes.STRING,
allowNull: false, allowNull: false},
}, requirementValue: {
requirement_value: {
type: DataTypes.DECIMAL(14, 2), type: DataTypes.DECIMAL(14, 2),
allowNull: false, allowNull: false}}, {
},
}, {
sequelize, sequelize,
modelName: 'TitleRequirement', modelName: 'TitleRequirement',
tableName: 'title_requirement', tableName: 'title_requirement',
@@ -32,10 +27,9 @@ TitleRequirement.init({
indexes: [ indexes: [
{ {
unique: true, unique: true,
fields: ['title_id', 'requirement_type'], fields: ['titleId', 'requirementType'],
name: 'title_requirement_titleid_reqtype_unique' name: 'title_requirement_titleid_reqtype_unique'
, }
freezeTableName: true}
] ]
}); });

View File

@@ -7,20 +7,16 @@ UndergroundType.init({
tr: { tr: {
type: DataTypes.STRING, type: DataTypes.STRING,
allowNull: false, allowNull: false,
unique: true, unique: true},
},
cost: { cost: {
type: DataTypes.INTEGER, type: DataTypes.INTEGER,
allowNull: false, allowNull: false}
}
}, { }, {
sequelize, sequelize,
modelName: 'UndergroundType', modelName: 'UndergroundType',
tableName: 'underground', tableName: 'underground',
schema: 'falukant_type', schema: 'falukant_type',
timestamps: false, timestamps: false,
underscored: true, underscored: true});
,
freezeTableName: true});
export default UndergroundType; export default UndergroundType;

View File

@@ -10,7 +10,6 @@ const Forum = sequelize.define('forum', {
tableName: 'forum', tableName: 'forum',
schema: 'forum', schema: 'forum',
underscored: true underscored: true
, });
freezeTableName: true});
export default Forum; export default Forum;

View File

@@ -2,7 +2,7 @@ import { sequelize } from '../../utils/sequelize.js';
import { DataTypes } from 'sequelize'; import { DataTypes } from 'sequelize';
const ForumForumPermission = sequelize.define('forum_forum_permission', { const ForumForumPermission = sequelize.define('forum_forum_permission', {
forum_id: { forumId: {
type: DataTypes.INTEGER, type: DataTypes.INTEGER,
allowNull: false, allowNull: false,
references: { references: {
@@ -10,7 +10,7 @@ const ForumForumPermission = sequelize.define('forum_forum_permission', {
key: 'id' key: 'id'
} }
}, },
permission_id: { permissionId: {
type: DataTypes.INTEGER, type: DataTypes.INTEGER,
allowNull: false, allowNull: false,
references: { references: {
@@ -22,7 +22,6 @@ const ForumForumPermission = sequelize.define('forum_forum_permission', {
tableName: 'forum_forum_permission', tableName: 'forum_forum_permission',
schema: 'forum', schema: 'forum',
underscored: true underscored: true
, });
freezeTableName: true});
export default ForumForumPermission; export default ForumForumPermission;

View File

@@ -4,20 +4,16 @@ import { DataTypes } from 'sequelize';
const ForumPermission = sequelize.define('forum_permission', { const ForumPermission = sequelize.define('forum_permission', {
name: { name: {
type: DataTypes.STRING, type: DataTypes.STRING,
allowNull: false, allowNull: false},
},
value: { value: {
type: DataTypes.STRING, type: DataTypes.STRING,
allowNull: true, allowNull: true}}, {
},
}, {
sequelize, sequelize,
modelName: 'ForumPermission', modelName: 'ForumPermission',
tableName: 'forum_permission', tableName: 'forum_permission',
schema: 'forum', schema: 'forum',
timestamps: false, timestamps: false,
underscored: true underscored: true
, });
freezeTableName: true});
export default ForumPermission; export default ForumPermission;

View File

@@ -2,23 +2,21 @@ import { sequelize } from '../../utils/sequelize.js';
import { DataTypes } from 'sequelize'; import { DataTypes } from 'sequelize';
const ForumUserPermission = sequelize.define('forum_user_permission', { const ForumUserPermission = sequelize.define('forum_user_permission', {
user_id: { userId: {
type: DataTypes.INTEGER, type: DataTypes.INTEGER,
allowNull: true allowNull: true
}, },
permission_id: { permissionId: {
type: DataTypes.INTEGER, type: DataTypes.INTEGER,
allowNull: false allowNull: false
}, },
forum_id: { forumId: {
type: DataTypes.INTEGER, type: DataTypes.INTEGER,
allowNull: false allowNull: false
}, }}, {
}, {
tableName: 'forum_user_permission', tableName: 'forum_user_permission',
schema: 'forum', schema: 'forum',
underscored: true underscored: true
, });
freezeTableName: true});
export default ForumUserPermission; export default ForumUserPermission;

View File

@@ -6,11 +6,11 @@ const Message = sequelize.define('message', {
type: DataTypes.TEXT, type: DataTypes.TEXT,
allowNull: false allowNull: false
}, },
created_by: { createdBy: {
type: DataTypes.INTEGER, type: DataTypes.INTEGER,
allowNull: false allowNull: false
}, },
title_id: { titleId: {
type: DataTypes.INTEGER, type: DataTypes.INTEGER,
allowNull: false allowNull: false
} }
@@ -19,7 +19,6 @@ const Message = sequelize.define('message', {
schema: 'forum', schema: 'forum',
underscored: true, underscored: true,
timestamps: true timestamps: true
, });
freezeTableName: true});
export default Message; export default Message;

View File

@@ -2,19 +2,19 @@ import { sequelize } from '../../utils/sequelize.js';
import { DataTypes } from 'sequelize'; import { DataTypes } from 'sequelize';
const MessageHistory = sequelize.define('message_history', { const MessageHistory = sequelize.define('message_history', {
message_id: { messageId: {
type: DataTypes.INTEGER, type: DataTypes.INTEGER,
allowNull: false allowNull: false
}, },
old_text: { oldText: {
type: DataTypes.TEXT, type: DataTypes.TEXT,
allowNull: false allowNull: false
}, },
changed_by: { changedBy: {
type: DataTypes.INTEGER, type: DataTypes.INTEGER,
allowNull: false allowNull: false
}, },
old_updated_at: { oldUpdatedAt: {
type: DataTypes.DATE, type: DataTypes.DATE,
allowNull: false allowNull: false
} }
@@ -23,7 +23,6 @@ const MessageHistory = sequelize.define('message_history', {
schema: 'forum', schema: 'forum',
underscored: true, underscored: true,
timestamps: false timestamps: false
, });
freezeTableName: true});
export default MessageHistory; export default MessageHistory;

View File

@@ -2,11 +2,11 @@ import { sequelize } from '../../utils/sequelize.js';
import { DataTypes } from 'sequelize'; import { DataTypes } from 'sequelize';
const MessageImage = sequelize.define('message_image', { const MessageImage = sequelize.define('message_image', {
message_id: { messageId: {
type: DataTypes.INTEGER, type: DataTypes.INTEGER,
allowNull: false allowNull: false
}, },
file_name: { fileName: {
type: DataTypes.STRING, type: DataTypes.STRING,
allowNull: false allowNull: false
} }
@@ -15,7 +15,6 @@ const MessageImage = sequelize.define('message_image', {
schema: 'forum', schema: 'forum',
underscored: true, underscored: true,
timestamps: false timestamps: false
, });
freezeTableName: true});
export default MessageImage; export default MessageImage;

View File

@@ -11,11 +11,11 @@ const Title = sequelize.define('title', {
type: DataTypes.STRING, type: DataTypes.STRING,
allowNull: false allowNull: false
}, },
created_by: { createdBy: {
type: DataTypes.INTEGER, type: DataTypes.INTEGER,
allowNull: false allowNull: false
}, },
forum_id: { forumId: {
type: DataTypes.INTEGER, type: DataTypes.INTEGER,
allowNull: false allowNull: false
} }
@@ -23,8 +23,6 @@ const Title = sequelize.define('title', {
tableName: 'title', tableName: 'title',
schema: 'forum', schema: 'forum',
underscored: true, underscored: true,
timestamps: true, timestamps: true});
,
freezeTableName: true});
export default Title; export default Title;

View File

@@ -2,19 +2,19 @@ import { sequelize } from '../../utils/sequelize.js';
import { DataTypes } from 'sequelize'; import { DataTypes } from 'sequelize';
const TitleHistory = sequelize.define('title_history', { const TitleHistory = sequelize.define('title_history', {
title_id: { titleId: {
type: DataTypes.INTEGER, type: DataTypes.INTEGER,
allowNull: false allowNull: false
}, },
old_title: { oldTitle: {
type: DataTypes.STRING, type: DataTypes.STRING,
allowNull: false allowNull: false
}, },
changed_by: { changedBy: {
type: DataTypes.INTEGER, type: DataTypes.INTEGER,
allowNull: false allowNull: false
}, },
old_updated_at: { oldUpdatedAt: {
type: DataTypes.DATE, type: DataTypes.DATE,
allowNull: false allowNull: false
} }
@@ -23,7 +23,6 @@ const TitleHistory = sequelize.define('title_history', {
schema: 'forum', schema: 'forum',
underscored: true, underscored: true,
timestamps: false timestamps: false
, });
freezeTableName: true});
export default TitleHistory; export default TitleHistory;

View File

@@ -86,20 +86,6 @@ import Credit from './falukant/data/credit.js';
import DebtorsPrism from './falukant/data/debtors_prism.js'; import DebtorsPrism from './falukant/data/debtors_prism.js';
import HealthActivity from './falukant/log/health_activity.js'; import HealthActivity from './falukant/log/health_activity.js';
// Minigames (service)
import MinigameCampaign from './service/minigame_campaign.js';
import MinigameCampaignLevel from './service/minigame_campaign_level.js';
import MinigameUserProgress from './service/minigame_user_progress.js';
// Match3 Models
import Match3Campaign from './match3/campaign.js';
import Match3Level from './match3/level.js';
import Match3Objective from './match3/objective.js';
import Match3UserProgress from './match3/userProgress.js';
import Match3UserLevelProgress from './match3/userLevelProgress.js';
import Match3TileType from './match3/tileType.js';
import Match3LevelTileType from './match3/levelTileType.js';
// — Politische Ämter (Politics) — // — Politische Ämter (Politics) —
import PoliticalOfficeType from './falukant/type/political_office_type.js'; import PoliticalOfficeType from './falukant/type/political_office_type.js';
import PoliticalOfficeRequirement from './falukant/predefine/political_office_prerequisite.js'; import PoliticalOfficeRequirement from './falukant/predefine/political_office_prerequisite.js';
@@ -208,16 +194,6 @@ const models = {
Credit, Credit,
DebtorsPrism, DebtorsPrism,
HealthActivity, HealthActivity,
MinigameCampaign,
MinigameCampaignLevel,
MinigameUserProgress,
Match3Campaign,
Match3Level,
Match3Objective,
Match3UserProgress,
Match3UserLevelProgress,
Match3TileType,
Match3LevelTileType,
PoliticalOfficeType, PoliticalOfficeType,
PoliticalOfficeRequirement, PoliticalOfficeRequirement,
PoliticalOfficeBenefitType, PoliticalOfficeBenefitType,

View File

@@ -15,7 +15,7 @@ const Campaign = sequelize.define('Campaign', {
type: DataTypes.TEXT, type: DataTypes.TEXT,
allowNull: true allowNull: true
}, },
is_active: { isActive: {
type: DataTypes.BOOLEAN, type: DataTypes.BOOLEAN,
defaultValue: true defaultValue: true
}, },
@@ -23,11 +23,11 @@ const Campaign = sequelize.define('Campaign', {
type: DataTypes.INTEGER, type: DataTypes.INTEGER,
defaultValue: 1 defaultValue: 1
}, },
created_at: { createdAt: {
type: DataTypes.DATE, type: DataTypes.DATE,
defaultValue: DataTypes.NOW defaultValue: DataTypes.NOW
}, },
updated_at: { updatedAt: {
type: DataTypes.DATE, type: DataTypes.DATE,
defaultValue: DataTypes.NOW defaultValue: DataTypes.NOW
} }
@@ -36,7 +36,6 @@ const Campaign = sequelize.define('Campaign', {
schema: 'match3', schema: 'match3',
timestamps: true, timestamps: true,
underscored: true // WICHTIG: Alle Datenbankfelder im snake_case Format underscored: true // WICHTIG: Alle Datenbankfelder im snake_case Format
, });
freezeTableName: true});
export default Campaign; export default Campaign;

View File

@@ -7,7 +7,7 @@ const Match3Level = sequelize.define('Match3Level', {
primaryKey: true, primaryKey: true,
autoIncrement: true autoIncrement: true
}, },
campaign_id: { campaignId: {
type: DataTypes.INTEGER, type: DataTypes.INTEGER,
allowNull: false, allowNull: false,
references: { references: {
@@ -27,40 +27,40 @@ const Match3Level = sequelize.define('Match3Level', {
type: DataTypes.INTEGER, type: DataTypes.INTEGER,
allowNull: false allowNull: false
}, },
board_layout: { boardLayout: {
type: DataTypes.TEXT, type: DataTypes.TEXT,
allowNull: true, // Ändern zu true, da bereits existierende Datensätze vorhanden sind 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 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)' comment: 'Level-Form als String (o = kein Feld, x = Feld, Zeilen durch \n getrennt)'
}, },
board_width: { boardWidth: {
type: DataTypes.INTEGER, type: DataTypes.INTEGER,
allowNull: true, // Ändern zu true, da bereits existierende Datensätze vorhanden sind allowNull: true, // Ändern zu true, da bereits existierende Datensätze vorhanden sind
defaultValue: 6, // Standardwert für neue Level defaultValue: 6, // Standardwert für neue Level
comment: 'Breite des Level-Boards' comment: 'Breite des Level-Boards'
}, },
board_height: { boardHeight: {
type: DataTypes.INTEGER, type: DataTypes.INTEGER,
allowNull: true, // Ändern zu true, da bereits existierende Datensätze vorhanden sind allowNull: true, // Ändern zu true, da bereits existierende Datensätze vorhanden sind
defaultValue: 6, // Standardwert für neue Level defaultValue: 6, // Standardwert für neue Level
comment: 'Höhe des Level-Boards' comment: 'Höhe des Level-Boards'
}, },
tile_types: { tileTypes: {
type: DataTypes.JSON, type: DataTypes.JSON,
allowNull: true, // Ändern zu true, da wir jetzt eine Verknüpfungstabelle haben allowNull: true, // Ändern zu true, da wir jetzt eine Verknüpfungstabelle haben
comment: 'Legacy: Array der verfügbaren Tile-Typen (wird durch levelTileTypes ersetzt)' comment: 'Legacy: Array der verfügbaren Tile-Typen (wird durch levelTileTypes ersetzt)'
}, },
move_limit: { moveLimit: {
type: DataTypes.INTEGER, type: DataTypes.INTEGER,
allowNull: false, allowNull: false,
defaultValue: 20 defaultValue: 20
}, },
time_limit: { timeLimit: {
type: DataTypes.INTEGER, type: DataTypes.INTEGER,
allowNull: true, allowNull: true,
comment: 'Zeitlimit in Sekunden (null = kein Limit)' comment: 'Zeitlimit in Sekunden (null = kein Limit)'
}, },
is_active: { isActive: {
type: DataTypes.BOOLEAN, type: DataTypes.BOOLEAN,
allowNull: false, allowNull: false,
defaultValue: true defaultValue: true
@@ -70,7 +70,6 @@ const Match3Level = sequelize.define('Match3Level', {
schema: 'match3', schema: 'match3',
timestamps: true, timestamps: true,
underscored: true // WICHTIG: Alle Datenbankfelder im snake_case Format underscored: true // WICHTIG: Alle Datenbankfelder im snake_case Format
, });
freezeTableName: true});
export default Match3Level; export default Match3Level;

View File

@@ -7,7 +7,7 @@ const Match3LevelTileType = sequelize.define('Match3LevelTileType', {
primaryKey: true, primaryKey: true,
autoIncrement: true autoIncrement: true
}, },
level_id: { levelId: {
type: DataTypes.INTEGER, type: DataTypes.INTEGER,
allowNull: false, allowNull: false,
references: { references: {
@@ -16,7 +16,7 @@ const Match3LevelTileType = sequelize.define('Match3LevelTileType', {
}, },
comment: 'Referenz auf den Level' comment: 'Referenz auf den Level'
}, },
tile_type_id: { tileTypeId: {
type: DataTypes.INTEGER, type: DataTypes.INTEGER,
allowNull: false, allowNull: false,
references: { references: {
@@ -31,7 +31,7 @@ const Match3LevelTileType = sequelize.define('Match3LevelTileType', {
defaultValue: 1, defaultValue: 1,
comment: 'Gewichtung für die Wahrscheinlichkeit, dass dieser Tile-Typ erscheint' comment: 'Gewichtung für die Wahrscheinlichkeit, dass dieser Tile-Typ erscheint'
}, },
is_active: { isActive: {
type: DataTypes.BOOLEAN, type: DataTypes.BOOLEAN,
allowNull: false, allowNull: false,
defaultValue: true, defaultValue: true,
@@ -45,9 +45,8 @@ const Match3LevelTileType = sequelize.define('Match3LevelTileType', {
indexes: [ indexes: [
{ {
unique: true, unique: true,
fields: ['level_id', 'tile_type_id'] // WICHTIG: Bei underscored: true müssen snake_case Namen verwendet werden fields: ['levelId', 'tileTypeId'] // WICHTIG: Bei underscored: true müssen snake_case Namen verwendet werden
, }
freezeTableName: true}
] ]
}); });

Some files were not shown because too many files have changed in this diff Show More