Files
Mastering-Node.js-Web-Devel…/Chapter 13/End of Chapter/part2app/dist/server/data/orm_helpers.js
T
2024-05-29 18:54:49 +01:00

60 lines
2.2 KiB
JavaScript

"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.fromOrmModel = exports.addSeedData = exports.defineRelationships = exports.initializeModels = void 0;
const sequelize_1 = require("sequelize");
const orm_models_1 = require("./orm_models");
const primaryKey = {
id: {
type: sequelize_1.DataTypes.INTEGER,
autoIncrement: true,
primaryKey: true
}
};
const initializeModels = (sequelize) => {
orm_models_1.Person.init({
...primaryKey,
name: { type: sequelize_1.DataTypes.STRING }
}, { sequelize });
orm_models_1.Calculation.init({
...primaryKey,
age: { type: sequelize_1.DataTypes.INTEGER },
years: { type: sequelize_1.DataTypes.INTEGER },
nextage: { type: sequelize_1.DataTypes.INTEGER },
}, { sequelize });
orm_models_1.ResultModel.init({
...primaryKey,
}, { sequelize });
};
exports.initializeModels = initializeModels;
const defineRelationships = () => {
orm_models_1.ResultModel.belongsTo(orm_models_1.Person, { foreignKey: "personId" });
orm_models_1.ResultModel.belongsTo(orm_models_1.Calculation, { foreignKey: "calculationId" });
};
exports.defineRelationships = defineRelationships;
const addSeedData = async (sequelize) => {
await sequelize.query(`
INSERT INTO Calculations
(id, age, years, nextage, createdAt, updatedAt) VALUES
(1, 35, 5, 40, date(), date()),
(2, 35, 10, 45, date(), date())`);
await sequelize.query(`
INSERT INTO People (id, name, createdAt, updatedAt) VALUES
(1, 'Alice', date(), date()), (2, "Bob", date(), date())`);
await sequelize.query(`
INSERT INTO ResultModels
(calculationId, personId, createdAt, updatedAt) VALUES
(1, 1, date(), date()), (2, 2, date(), date()),
(2, 1, date(), date());`);
};
exports.addSeedData = addSeedData;
const fromOrmModel = (model) => {
return {
id: model?.id || 0,
name: model?.Person?.name || "",
age: model?.Calculation?.age || 0,
years: model?.Calculation?.years || 0,
nextage: model?.Calculation?.nextage || 0
};
};
exports.fromOrmModel = fromOrmModel;