const { Sequelize, DataTypes, Op, literal } = require("sequelize"); const sequelize = new Sequelize( "postgres://postgres:postgres@localhost:5432/drink-water-unit" ); const data = require("./data.json"); //----------------------- MODELS const waterSample = sequelize.define("waterSample", { pid: { type: DataTypes.INTEGER, allowNull: true, }, ord: { type: DataTypes.INTEGER, allowNull: true, }, type: { type: DataTypes.STRING, allowNull: false, desc: `:نوع نمونه 1.آب آشامیدنی 2. آب سامانه نمک زدایی 3.آب معدنی طبیعی 4.آب بسته بندی 5.آب استخر 6.آب شناگاه های طبیعی 7.فاضلاب/پساب 8.یخ`, }, mainGroupTest: { type: DataTypes.STRING, allowNull: false, desc: `:گروه اصلی آزمایش 1.رادیو اکتیو 2.شیمیایی 3.فیزیکی 4.کلرسنجی 5.میکروبی`, }, subGroupTest: { type: DataTypes.STRING(128), allowNull: false, desc: `گروه فرعی آزمایش`, }, latinName: { type: DataTypes.STRING(128), allowNull: true, desc: `نام لاتینِ پارامتر`, }, name: { type: DataTypes.STRING(128), allowNull: true, desc: `نام فارسی پارامتر`, }, symbol: { type: DataTypes.STRING(10), allowNull: true, desc: `علامت اختصاری`, }, measureUnit: { type: DataTypes.STRING(32), allowNull: true, desc: "واحد اندازه گیری", }, paramCode: { type: DataTypes.STRING(8), allowNull: true, desc: "کد پارامتر", }, minValid: { type: DataTypes.STRING(128), allowNull: true, desc: "حداقل مجاز", }, maxValid: { type: DataTypes.STRING(128), allowNull: true, desc: "حداکثر مجاز", }, minOptimal: { type: DataTypes.STRING(128), allowNull: true, desc: "حداقل مطلوب", }, maxOptimal: { type: DataTypes.STRING(128), allowNull: true, desc: "حداکثر مطلوب", }, maxTransportTime: { type: DataTypes.STRING, allowNull: true, desc: "حداکثر زمان انتقال نمونه به آزمایشگاه", }, maxWriteInTime: { type: DataTypes.STRING(8), allowNull: true, desc: "حداکثر زمان ثبت نتیجه نمونه برداری", sample: ` null => در محل 30 mi => سی دقیقه 1 h => یک ساعت 1 d => یک روز 1 mo => یک ماه 1 y => یک سال `, }, containerProperty: { type: DataTypes.STRING, allowNull: true, desc: "ویژگی ظرف نگهداری", }, keepCondition: { type: DataTypes.STRING, allowNull: true, desc: "شرایط نگهداری", }, minSampleAmount: { type: DataTypes.STRING, allowNull: true, desc: "حداقل حجم نمونه مورد نیاز ", }, examinMethod: { type: DataTypes.TEXT, allowNull: true, desc: "روش انجام آزمایش", }, standardNum: { type: DataTypes.STRING(64), allowNull: true, desc: "شماره استاندارد", }, workflowId: { type: DataTypes.INTEGER, allowNull: false, desc: "شناسه روند کار", }, }); const workflowMap = new Map([ ["آب آشامیدنی عمومی", 11], ["آب سامانه نمک زدایی", 14], ["آب معدنی طبیعی", 11], ["آب بسته بندی", 11], ["آب استخر", 15], ["آب شناگاه های طبیعی", 17], ["فاضلاب/پساب", 16], ["یخ", 13], ]); sequelize .authenticate() .then(async () => { console.log("Connection has been established successfully."); let result; await sequelize.sync({ force: true }); const arrayToBulk = []; for (const item of data.array) { let workflowId; const typePeaces = item.type.split(" "); if (typePeaces.includes("آشامیدنی")) workflowId = 11; else if (typePeaces.includes("سامانه")) workflowId = 14; else if (typePeaces.includes("معدنی")) workflowId = 11; else if (typePeaces.includes("بسته")) workflowId = 11; else if (typePeaces.includes("استخر")) workflowId = 15; else if (typePeaces.includes("شناگاه")) workflowId = 17; else if (typePeaces.includes("یخ")) workflowId = 13; else workflowId = 16; arrayToBulk.push({ type: item.type, mainGroupTest: item.mainGroupTest, subGroupTest: item.subGroupTest, latinName: item.latinName, name: item.name, symbol: item.symbol, measureUnit: item.measureUnit, paramCode: item.paramCode, minValid: item.minValid, maxValid: item.maxValid, minOptimal: item.minOptimal, maxOptimal: item.maxOptimal, maxTransportTime: item.maxTransportTime, maxWriteInTime: item.maxWriteInTime, containerProperty: item.containerProperty, keepCondition: item.keepCondition, minSampleAmount: item.minSampleAmount, examinMethod: item.examinMethod, standardNum: item.standardNum, workflowId, }); } await waterSample.bulkCreate(arrayToBulk); sequelize.close(); }) .catch((err) => { console.error("Unable to connect to the database:", err); });