Start implementation of branches, new form element tabledropdown, model improvements
This commit is contained in:
@@ -31,6 +31,18 @@ import Friendship from './community/friendship.js';
|
||||
import FalukantUser from './falukant/data/user.js';
|
||||
import RegionType from './falukant/type/region.js';
|
||||
import RegionData from './falukant/data/region.js';
|
||||
import FalukantCharacter from './falukant/data/character.js';
|
||||
import FalukantPredefineFirstname from './falukant/predefine/firstname.js';
|
||||
import FalukantPredefineLastname from './falukant/predefine/lastname.js';
|
||||
import FalukantStock from './falukant/data/stock.js';
|
||||
import FalukantStockType from './falukant/type/stock.js';
|
||||
import Knowledge from './falukant/data/product_knowledge.js';
|
||||
import ProductType from './falukant/type/product.js';
|
||||
import TitleOfNobility from './falukant/type/title_of_nobility.js';
|
||||
import TitleRequirement from './falukant/type/title_requirement.js';
|
||||
import Branch from './falukant/data/branch.js';
|
||||
import BranchType from './falukant/type/branch.js';
|
||||
|
||||
|
||||
export default function setupAssociations() {
|
||||
// UserParam related associations
|
||||
@@ -181,4 +193,46 @@ export default function setupAssociations() {
|
||||
|
||||
FalukantUser.belongsTo(RegionData, { foreignKey: 'mainBranchRegionId', as: 'mainBranchRegion' });
|
||||
RegionData.hasMany(FalukantUser, { foreignKey: 'mainBranchRegionId', as: 'users' });
|
||||
|
||||
FalukantCharacter.belongsTo(FalukantUser, { foreignKey: 'userId', as: 'user' });
|
||||
FalukantUser.hasOne(FalukantCharacter, { foreignKey: 'userId', as: 'character' });
|
||||
|
||||
FalukantCharacter.belongsTo(FalukantPredefineFirstname, { foreignKey: 'firstName', as: 'definedFirstName' });
|
||||
FalukantPredefineFirstname.hasMany(FalukantCharacter, { foreignKey: 'firstName', as: 'charactersWithFirstName' });
|
||||
|
||||
FalukantCharacter.belongsTo(FalukantPredefineLastname, { foreignKey: 'lastName', as: 'definedLastName' });
|
||||
FalukantPredefineLastname.hasMany(FalukantCharacter, { foreignKey: 'lastName', as: 'charactersWithLastName' });
|
||||
|
||||
FalukantCharacter.belongsTo(TitleOfNobility, { foreignKey: 'titleOfNobility', as: 'nobleTitle' });
|
||||
TitleOfNobility.hasMany(FalukantCharacter, { foreignKey: 'titleOfNobility', as: 'charactersWithNobleTitle' });
|
||||
|
||||
FalukantCharacter.belongsTo(RegionData, { foreignKey: 'regionId', as: 'region' });
|
||||
RegionData.hasMany(FalukantCharacter, { foreignKey: 'regionId', as: 'charactersInRegion' });
|
||||
|
||||
FalukantStock.belongsTo(FalukantStockType, { foreignKey: 'stockTypeId', as: 'stockType' });
|
||||
FalukantStockType.hasMany(FalukantStock, { foreignKey: 'stockTypeId', as: 'stocks' });
|
||||
|
||||
FalukantStock.belongsTo(FalukantUser, { foreignKey: 'userId', as: 'user' });
|
||||
FalukantUser.hasMany(FalukantStock, { foreignKey: 'userId', as: 'stocks' });
|
||||
|
||||
FalukantStock.belongsTo(RegionData, { foreignKey: 'regionId', as: 'region' });
|
||||
RegionData.hasMany(FalukantStock, { foreignKey: 'regionId', as: 'stocksInRegion' });
|
||||
|
||||
Knowledge.belongsTo(ProductType, { foreignKey: 'productTypeId', as: 'productType' });
|
||||
ProductType.hasMany(Knowledge, { foreignKey: 'productTypeId', as: 'knowledges' });
|
||||
|
||||
Knowledge.belongsTo(FalukantCharacter, { foreignKey: 'characterId', as: 'character' });
|
||||
FalukantCharacter.hasMany(Knowledge, { foreignKey: 'characterId', as: 'knowledges' });
|
||||
|
||||
TitleRequirement.belongsTo(TitleOfNobility, { foreignKey: 'titleId', as: 'title' });
|
||||
TitleOfNobility.hasMany(TitleRequirement, { foreignKey: 'titleId', as: 'requirements' });
|
||||
|
||||
Branch.belongsTo(RegionData, { foreignKey: 'regionId', as: 'region' });
|
||||
RegionData.hasMany(Branch, { foreignKey: 'regionId', as: 'branches' });
|
||||
|
||||
Branch.belongsTo(FalukantUser, { foreignKey: 'falukantUserId', as: 'user' });
|
||||
FalukantUser.hasMany(Branch, { foreignKey: 'falukantUserId', as: 'branches' });
|
||||
|
||||
Branch.belongsTo(BranchType, { foreignKey: 'branchTypeId', as: 'branchType' });
|
||||
BranchType.hasMany(Branch, { foreignKey: 'branchTypeId', as: 'branches' });
|
||||
}
|
||||
|
||||
34
backend/models/falukant/data/branch.js
Normal file
34
backend/models/falukant/data/branch.js
Normal file
@@ -0,0 +1,34 @@
|
||||
import { Model, DataTypes } from 'sequelize';
|
||||
import { sequelize } from '../../../utils/sequelize.js';
|
||||
|
||||
class Branch extends Model { }
|
||||
|
||||
Branch.init({
|
||||
branchTypeId: {
|
||||
type: DataTypes.INTEGER,
|
||||
allowNull: false,
|
||||
},
|
||||
regionId: {
|
||||
type: DataTypes.INTEGER,
|
||||
allowNull: false,
|
||||
},
|
||||
falukantUserId: {
|
||||
type: DataTypes.INTEGER,
|
||||
allowNull: false,
|
||||
},
|
||||
}, {
|
||||
sequelize,
|
||||
modelName: 'BranchType',
|
||||
tableName: 'branch',
|
||||
schema: 'falukant_data',
|
||||
timestamps: false,
|
||||
underscored: true,
|
||||
indexes: [
|
||||
{
|
||||
unique: true,
|
||||
fields: ['region_id', 'falukant_user_id']
|
||||
}
|
||||
],
|
||||
});
|
||||
|
||||
export default Branch;
|
||||
49
backend/models/falukant/data/character.js
Normal file
49
backend/models/falukant/data/character.js
Normal file
@@ -0,0 +1,49 @@
|
||||
import { Model, DataTypes } from 'sequelize';
|
||||
import { sequelize } from '../../../utils/sequelize.js';
|
||||
|
||||
class FalukantCharacter extends Model {};
|
||||
|
||||
FalukantCharacter.init({
|
||||
userId: {
|
||||
type: DataTypes.INTEGER,
|
||||
allowNull: true,
|
||||
},
|
||||
regionId: {
|
||||
type: DataTypes.INTEGER,
|
||||
allowNull: false,
|
||||
},
|
||||
firstName: {
|
||||
type: DataTypes.INTEGER,
|
||||
allowNull: false,
|
||||
},
|
||||
lastName: {
|
||||
type: DataTypes.INTEGER,
|
||||
allowNull: false,
|
||||
},
|
||||
birthdate: {
|
||||
type: DataTypes.DATE,
|
||||
allowNull: false,
|
||||
defaultValue: DataTypes.NOW
|
||||
},
|
||||
gender: {
|
||||
type: DataTypes.STRING
|
||||
},
|
||||
health: {
|
||||
type: DataTypes.INTEGER,
|
||||
allowNull: false,
|
||||
defaultValue: 100
|
||||
},
|
||||
titleOfNobility: {
|
||||
type: DataTypes.INTEGER,
|
||||
allowNull: false,
|
||||
}
|
||||
}, {
|
||||
sequelize,
|
||||
modelName: 'FalukantCharacter',
|
||||
tableName: 'character',
|
||||
schema: 'falukant_data',
|
||||
timestamps: true,
|
||||
underscored: true,
|
||||
});
|
||||
|
||||
export default FalukantCharacter;
|
||||
34
backend/models/falukant/data/product_knowledge.js
Normal file
34
backend/models/falukant/data/product_knowledge.js
Normal file
@@ -0,0 +1,34 @@
|
||||
import { Model, DataTypes } from 'sequelize';
|
||||
import { sequelize } from '../../../utils/sequelize.js';
|
||||
|
||||
class Knowledge extends Model { }
|
||||
|
||||
Knowledge.init({
|
||||
productId: {
|
||||
type: DataTypes.INTEGER,
|
||||
allowNull: false,
|
||||
},
|
||||
characterId: {
|
||||
type: DataTypes.INTEGER,
|
||||
allowNull: false,
|
||||
},
|
||||
knowledge: {
|
||||
type: DataTypes.INTEGER,
|
||||
allowNull: false,
|
||||
defaultValue: 0,
|
||||
}
|
||||
}, {
|
||||
sequelize,
|
||||
modelName: 'Knowledge',
|
||||
tableName: 'knowledge',
|
||||
schema: 'falukant_data',
|
||||
timestamps: false,
|
||||
underscored: true,
|
||||
hooks: {
|
||||
beforeCreate: (knowledge) => {
|
||||
knowledge.knowledge = Math.floor(Math.random() * 61) + 20;
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
export default Knowledge;
|
||||
32
backend/models/falukant/data/stock.js
Normal file
32
backend/models/falukant/data/stock.js
Normal file
@@ -0,0 +1,32 @@
|
||||
import { Model, DataTypes } from 'sequelize';
|
||||
import { sequelize } from '../../../utils/sequelize.js';
|
||||
|
||||
class FalukantStock extends Model { }
|
||||
|
||||
FalukantStock.init({
|
||||
userId: {
|
||||
type: DataTypes.INTEGER,
|
||||
allowNull: false,
|
||||
},
|
||||
regionId: {
|
||||
type: DataTypes.INTEGER,
|
||||
allowNull: false,
|
||||
},
|
||||
stockTypeId: {
|
||||
type: DataTypes.INTEGER,
|
||||
allowNull: false,
|
||||
},
|
||||
quantity: {
|
||||
type: DataTypes.INTEGER,
|
||||
allowNull: false,
|
||||
},
|
||||
}, {
|
||||
sequelize,
|
||||
modelName: 'StockType',
|
||||
tableName: 'stock',
|
||||
schema: 'falukant_data',
|
||||
timestamps: false,
|
||||
underscored: true,
|
||||
});
|
||||
|
||||
export default FalukantStock;
|
||||
@@ -14,7 +14,8 @@ FalukantUser.init({
|
||||
schema: 'community'
|
||||
},
|
||||
key: 'id'
|
||||
}
|
||||
},
|
||||
unique: true,
|
||||
},
|
||||
money: {
|
||||
type: DataTypes.DECIMAL(10, 2),
|
||||
|
||||
26
backend/models/falukant/predefine/firstname.js
Normal file
26
backend/models/falukant/predefine/firstname.js
Normal file
@@ -0,0 +1,26 @@
|
||||
import { sequelize } from '../../../utils/sequelize.js';
|
||||
import { DataTypes } from 'sequelize';
|
||||
|
||||
const FalukantPredefineFirstname = sequelize.define('firstname', {
|
||||
name: {
|
||||
type: DataTypes.STRING,
|
||||
allowNull: false
|
||||
},
|
||||
gender: {
|
||||
type: DataTypes.STRING,
|
||||
allowNull: false
|
||||
}
|
||||
}, {
|
||||
tableName: 'firstname',
|
||||
schema: 'falukant_predefine',
|
||||
underscored: true,
|
||||
timestamps: false,
|
||||
indexes: [
|
||||
{
|
||||
unique: true,
|
||||
fields: ['name', 'gender']
|
||||
}
|
||||
],
|
||||
});
|
||||
|
||||
export default FalukantPredefineFirstname;
|
||||
23
backend/models/falukant/predefine/lastname.js
Normal file
23
backend/models/falukant/predefine/lastname.js
Normal file
@@ -0,0 +1,23 @@
|
||||
import { sequelize } from '../../../utils/sequelize.js';
|
||||
import { DataTypes } from 'sequelize';
|
||||
|
||||
const FalukantPredefineLastname = sequelize.define('lastname', {
|
||||
name: {
|
||||
type: DataTypes.STRING,
|
||||
length: 1,
|
||||
allowNull: false
|
||||
},
|
||||
}, {
|
||||
tableName: 'lastname',
|
||||
schema: 'falukant_predefine',
|
||||
underscored: true,
|
||||
timestamps: false,
|
||||
indexes: [
|
||||
{
|
||||
unique: true,
|
||||
fields: ['name']
|
||||
}
|
||||
],
|
||||
});
|
||||
|
||||
export default FalukantPredefineLastname;
|
||||
30
backend/models/falukant/type/branch.js
Normal file
30
backend/models/falukant/type/branch.js
Normal file
@@ -0,0 +1,30 @@
|
||||
import { Model, DataTypes } from 'sequelize';
|
||||
import { sequelize } from '../../../utils/sequelize.js';
|
||||
|
||||
class BranchType extends Model { }
|
||||
|
||||
BranchType.init({
|
||||
labelTr: {
|
||||
type: DataTypes.STRING,
|
||||
allowNull: false,
|
||||
},
|
||||
baseCost: {
|
||||
type: DataTypes.INTEGER,
|
||||
allowNull: false,
|
||||
}
|
||||
}, {
|
||||
sequelize,
|
||||
modelName: 'BranchType',
|
||||
tableName: 'branch',
|
||||
schema: 'falukant_type',
|
||||
timestamps: false,
|
||||
underscored: true,
|
||||
indexes: [
|
||||
{
|
||||
unique: true,
|
||||
fields: ['label_tr']
|
||||
}
|
||||
],
|
||||
});
|
||||
|
||||
export default BranchType;
|
||||
38
backend/models/falukant/type/product.js
Normal file
38
backend/models/falukant/type/product.js
Normal file
@@ -0,0 +1,38 @@
|
||||
import { Model, DataTypes } from 'sequelize';
|
||||
import { sequelize } from '../../../utils/sequelize.js';
|
||||
|
||||
class ProductType extends Model { }
|
||||
|
||||
ProductType.init({
|
||||
labelTr: {
|
||||
type: DataTypes.STRING,
|
||||
allowNull: false,
|
||||
},
|
||||
category: {
|
||||
type: DataTypes.INTEGER,
|
||||
allowNull: false,
|
||||
},
|
||||
productionTime: {
|
||||
type: DataTypes.INTEGER,
|
||||
allowNull: false,
|
||||
},
|
||||
sellCost: {
|
||||
type: DataTypes.INTEGER,
|
||||
allowNull: false,
|
||||
}
|
||||
}, {
|
||||
sequelize,
|
||||
modelName: 'ProductType',
|
||||
tableName: 'product',
|
||||
schema: 'falukant_type',
|
||||
timestamps: false,
|
||||
underscored: true,
|
||||
indexes: [
|
||||
{
|
||||
unique: true,
|
||||
fields: ['label_tr']
|
||||
}
|
||||
],
|
||||
});
|
||||
|
||||
export default ProductType;
|
||||
24
backend/models/falukant/type/stock.js
Normal file
24
backend/models/falukant/type/stock.js
Normal file
@@ -0,0 +1,24 @@
|
||||
import { Model, DataTypes } from 'sequelize';
|
||||
import { sequelize } from '../../../utils/sequelize.js';
|
||||
|
||||
class FalukantStockType extends Model { }
|
||||
|
||||
FalukantStockType.init({
|
||||
labelTr: {
|
||||
type: DataTypes.STRING,
|
||||
allowNull: false,
|
||||
},
|
||||
cost: {
|
||||
type: DataTypes.INTEGER,
|
||||
allowNull: false,
|
||||
}
|
||||
}, {
|
||||
sequelize,
|
||||
modelName: 'StockType',
|
||||
tableName: 'stock',
|
||||
schema: 'falukant_type',
|
||||
timestamps: false,
|
||||
underscored: true,
|
||||
});
|
||||
|
||||
export default FalukantStockType;
|
||||
20
backend/models/falukant/type/title_of_nobility.js
Normal file
20
backend/models/falukant/type/title_of_nobility.js
Normal file
@@ -0,0 +1,20 @@
|
||||
import { Model, DataTypes } from 'sequelize';
|
||||
import { sequelize } from '../../../utils/sequelize.js';
|
||||
|
||||
class TitleOfNobility extends Model { }
|
||||
|
||||
TitleOfNobility.init({
|
||||
labelTr: {
|
||||
type: DataTypes.STRING,
|
||||
allowNull: false,
|
||||
},
|
||||
}, {
|
||||
sequelize,
|
||||
modelName: 'Title',
|
||||
tableName: 'title',
|
||||
schema: 'falukant_type',
|
||||
timestamps: false,
|
||||
underscored: true,
|
||||
});
|
||||
|
||||
export default TitleOfNobility;
|
||||
30
backend/models/falukant/type/title_requirement.js
Normal file
30
backend/models/falukant/type/title_requirement.js
Normal file
@@ -0,0 +1,30 @@
|
||||
import { Model, DataTypes } from 'sequelize';
|
||||
import { sequelize } from '../../../utils/sequelize.js';
|
||||
|
||||
class TitleRequirement extends Model { }
|
||||
|
||||
TitleRequirement.init({
|
||||
titleId: {
|
||||
type: DataTypes.INTEGER,
|
||||
allowNull: false,
|
||||
primaryKey: true,
|
||||
autoIncrement: true,
|
||||
},
|
||||
requirementType: {
|
||||
type: DataTypes.STRING,
|
||||
allowNull: false,
|
||||
},
|
||||
requirementValue: {
|
||||
type: DataTypes.DECIMAL(14, 2),
|
||||
allowNull: false,
|
||||
},
|
||||
}, {
|
||||
sequelize,
|
||||
modelName: 'TitleRequirement',
|
||||
tableName: 'title_requirement',
|
||||
schema: 'falukant_type',
|
||||
timestamps: false,
|
||||
underscored: true,
|
||||
});
|
||||
|
||||
export default TitleRequirement;
|
||||
@@ -35,6 +35,17 @@ import Friendship from './community/friendship.js';
|
||||
import FalukantUser from './falukant/data/user.js';
|
||||
import RegionType from './falukant/type/region.js';
|
||||
import RegionData from './falukant/data/region.js';
|
||||
import FalukantPredefineFirstname from './falukant/predefine/firstname.js';
|
||||
import FalukantPredefineLastname from './falukant/predefine/lastname.js';
|
||||
import FalukantCharacter from './falukant/data/character.js';
|
||||
import FalukantStock from './falukant/data/stock.js';
|
||||
import FalukantStockType from './falukant/type/stock.js';
|
||||
import ProductType from './falukant/type/product.js';
|
||||
import Knowledge from './falukant/data/product_knowledge.js';
|
||||
import TitleRequirement from './falukant/type/title_requirement.js';
|
||||
import TitleOfNobility from './falukant/type/title_of_nobility.js';
|
||||
import BranchType from './falukant/type/branch.js';
|
||||
import Branch from './falukant/data/branch.js';
|
||||
|
||||
const models = {
|
||||
SettingsType,
|
||||
@@ -74,6 +85,17 @@ const models = {
|
||||
RegionType,
|
||||
RegionData,
|
||||
FalukantUser,
|
||||
FalukantPredefineFirstname,
|
||||
FalukantPredefineLastname,
|
||||
FalukantCharacter,
|
||||
FalukantStock,
|
||||
FalukantStockType,
|
||||
ProductType,
|
||||
Knowledge,
|
||||
TitleOfNobility,
|
||||
TitleRequirement,
|
||||
BranchType,
|
||||
Branch,
|
||||
};
|
||||
|
||||
export default models;
|
||||
|
||||
@@ -2,7 +2,7 @@ import { sequelize } from '../utils/sequelize.js';
|
||||
|
||||
export async function createTriggers() {
|
||||
const createTriggerFunction = `
|
||||
CREATE OR REPLACE FUNCTION create_user_param_visibility_trigger()
|
||||
CREATE OR REPLACE FUNCTION community.create_user_param_visibility_trigger()
|
||||
RETURNS TRIGGER AS $$
|
||||
BEGIN
|
||||
-- Check if UserParamVisibility already exists for this UserParam
|
||||
@@ -32,7 +32,7 @@ export async function createTriggers() {
|
||||
AFTER INSERT ON community.user_param
|
||||
FOR EACH ROW
|
||||
WHEN (NEW.id IS NOT NULL)
|
||||
EXECUTE FUNCTION create_user_param_visibility_trigger();
|
||||
EXECUTE FUNCTION community.create_user_param_visibility_trigger();
|
||||
`;
|
||||
|
||||
const createUpdateTrigger = `
|
||||
@@ -40,11 +40,11 @@ export async function createTriggers() {
|
||||
AFTER UPDATE ON community.user_param
|
||||
FOR EACH ROW
|
||||
WHEN (NEW.id IS NOT NULL)
|
||||
EXECUTE FUNCTION create_user_param_visibility_trigger();
|
||||
EXECUTE FUNCTION community.create_user_param_visibility_trigger();
|
||||
`;
|
||||
|
||||
const createDiaryHistoryTriggerFunction = `
|
||||
CREATE OR REPLACE FUNCTION insert_diary_history()
|
||||
CREATE OR REPLACE FUNCTION community.insert_diary_history()
|
||||
RETURNS TRIGGER AS $$
|
||||
BEGIN
|
||||
INSERT INTO community.diary_history (diary_id, user_id, old_text, old_created_at, old_updated_at)
|
||||
@@ -65,11 +65,11 @@ export async function createTriggers() {
|
||||
BEFORE UPDATE ON community.diary
|
||||
FOR EACH ROW
|
||||
WHEN (OLD.id IS NOT NULL)
|
||||
EXECUTE FUNCTION insert_diary_history();
|
||||
EXECUTE FUNCTION community.insert_diary_history();
|
||||
`;
|
||||
|
||||
const createTitleHistoryTriggerFunction = `
|
||||
CREATE OR REPLACE FUNCTION insert_title_history()
|
||||
CREATE OR REPLACE FUNCTION forum.insert_title_history()
|
||||
RETURNS TRIGGER AS $$
|
||||
BEGIN
|
||||
INSERT INTO forum.title_history (title_id, old_title, changed_by, old_updated_at)
|
||||
@@ -84,7 +84,44 @@ export async function createTriggers() {
|
||||
BEFORE UPDATE ON forum.title
|
||||
FOR EACH ROW
|
||||
WHEN (OLD.id IS NOT NULL)
|
||||
EXECUTE FUNCTION insert_title_history();
|
||||
EXECUTE FUNCTION forum.insert_title_history();
|
||||
`;
|
||||
|
||||
const createCharacterCreationTriggerMethod = `
|
||||
CREATE OR REPLACE FUNCTION falukant_data.create_character_creation_trigger()
|
||||
RETURNS TRIGGER AS $$
|
||||
BEGIN
|
||||
INSERT INTO falukant_data.knowledge (product_id, character_id)
|
||||
SELECT id, NEW.id FROM falukant_type.product;
|
||||
RETURN NEW;
|
||||
END;
|
||||
$$ LANGUAGE plpgsql;
|
||||
`;
|
||||
|
||||
const createCharacterCreationTrigger = `
|
||||
CREATE OR REPLACE TRIGGER character_creation_trigger
|
||||
AFTER INSERT ON falukant_data.character
|
||||
FOR EACH ROW
|
||||
WHEN (NEW.id IS NOT NULL)
|
||||
EXECUTE FUNCTION falukant_data.create_character_creation_trigger();
|
||||
`;
|
||||
|
||||
const createKnowledgeTriggerMethod = `
|
||||
CREATE OR REPLACE FUNCTION falukant_data.create_knowledge_trigger()
|
||||
RETURNS TRIGGER AS $$
|
||||
BEGIN
|
||||
NEW.knowledge = random() * 61 + 20;
|
||||
RETURN NEW;
|
||||
END;
|
||||
$$ LANGUAGE plpgsql;
|
||||
`;
|
||||
|
||||
const createKnowledgeTrigger = `
|
||||
CREATE OR REPLACE TRIGGER knowledge_trigger
|
||||
BEFORE INSERT ON falukant_data.knowledge
|
||||
FOR EACH ROW
|
||||
WHEN (NEW.id IS NOT NULL)
|
||||
EXECUTE FUNCTION falukant_data.create_knowledge_trigger();
|
||||
`;
|
||||
|
||||
try {
|
||||
@@ -95,10 +132,14 @@ export async function createTriggers() {
|
||||
await sequelize.query(createDiaryHistoryTrigger);
|
||||
await sequelize.query(createTitleHistoryTriggerFunction);
|
||||
await sequelize.query(createTitleHistoryTrigger);
|
||||
await sequelize.query(createCharacterCreationTriggerMethod);
|
||||
await sequelize.query(createCharacterCreationTrigger);
|
||||
await sequelize.query(createKnowledgeTriggerMethod);
|
||||
await sequelize.query(createKnowledgeTrigger);
|
||||
|
||||
console.log('Triggers created successfully');
|
||||
} catch (error) {
|
||||
console.error('Error creating triggers:', error);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user