|
|
const fs = require('fs'); |
|
|
|
|
|
const modelName = "user" |
|
|
|
|
|
|
|
|
fs.writeFileSync("./result.js",""); |
|
|
// خواندن فایل متنی |
|
|
fs.readFile('schema.txt', 'utf8', (err, data) => { |
|
|
if (err) { |
|
|
console.error('Error reading file:', err); |
|
|
return; |
|
|
} |
|
|
|
|
|
// پردازش و تبدیل متن به آبجکت |
|
|
const parsedObject = parseTextToObject(data); |
|
|
console.log(parsedObject); |
|
|
}); |
|
|
|
|
|
const sleep = (ms)=>{ |
|
|
return new Promise(resolve=>{ |
|
|
setTimeout(resolve,ms); |
|
|
}) |
|
|
} |
|
|
|
|
|
// تابع برای پردازش و تبدیل متن |
|
|
function parseTextToObject(data) { |
|
|
const cleanedData = data |
|
|
.replace(/\/\/.*$/gm, '') // حذف کامنتها |
|
|
.replace(/(this\.DataTypes\.[A-Z]+)((\([0-9]{1,4}\))?)/g, '"$1$2"'); // سادهسازی نام DataTypes |
|
|
try { |
|
|
// return fs.(`(${cleanedData})`); |
|
|
fs.writeFileSync("./schema.js",`module.exports = { schemaObject: ${cleanedData} }`,{encoding:"utf-8"}) |
|
|
console.log("done") |
|
|
getObject(); |
|
|
} catch (error) { |
|
|
console.error('Error parsing text to object:', error); |
|
|
return null; |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
async function getObject(){ |
|
|
console.log('in getobjects and wait 3 seconds') |
|
|
await sleep(3000); |
|
|
const {schemaObject} = require('./schema'); |
|
|
console.log("schemaObject",schemaObject); |
|
|
for(let keys in schemaObject){ |
|
|
let dynamicContent= ""; |
|
|
let dynamicContent2="" |
|
|
let takeProperties = {} |
|
|
let theType="string"; |
|
|
for(let property in schemaObject[keys]){ |
|
|
switch(property){ |
|
|
case "type": |
|
|
if(schemaObject[keys][property]?.includes("string".toUpperCase())){ |
|
|
takeProperties[property] = schemaObject[keys][property].replace(/\([0-9]{1,4}\)/g,"").replace("this.DataTypes","DataType").replace(/\"/g,""); |
|
|
theType="string"; |
|
|
console.log(schemaObject[keys][property].replace(/\([0-9]{1-4}\)/g,"").replace(/\([0-9]{1-4}\)/g,"").replace("this.DataTypes","DataType")) |
|
|
}else if(schemaObject[keys][property]?.includes("date".toUpperCase())){ |
|
|
takeProperties[property] = schemaObject[keys][property].replace("this.DataTypes","DataType"); |
|
|
theType="Date"; |
|
|
}else if(schemaObject[keys][property]?.includes("int".toUpperCase())){ |
|
|
takeProperties[property] = schemaObject[keys][property].replace("this.DataTypes","DataType"); |
|
|
theType="number"; |
|
|
}else if(schemaObject[keys][property]?.includes("char".toUpperCase())){ |
|
|
takeProperties[property] = schemaObject[keys][property].replace("this.DataTypes","DataType"); |
|
|
theType="string"; |
|
|
}else if(schemaObject[keys][property]?.includes("text".toUpperCase())){ |
|
|
takeProperties[property] = schemaObject[keys][property].replace("this.DataTypes","DataType"); |
|
|
theType="string"; |
|
|
}else if(schemaObject[keys][property]?.includes("bool".toUpperCase())){ |
|
|
takeProperties[property] = schemaObject[keys][property].replace("this.DataTypes","DataType"); |
|
|
theType="boolean"; |
|
|
}else{ |
|
|
console.log('oh what was it !!!!'); |
|
|
console.log(property,schemaObject[keys][property]); |
|
|
console.log("--------------------------------------------") |
|
|
takeProperties[property] = schemaObject[keys][property].replace("this.DataTypes","DataType"); |
|
|
theType="string"; |
|
|
} |
|
|
break; |
|
|
case "regex": |
|
|
const regexContent = schemaObject[keys][property]; |
|
|
takeProperties[property] = schemaObject[keys][property]; |
|
|
takeProperties['validate'] = `{is:/${regexContent}}/}` |
|
|
break; |
|
|
default: |
|
|
takeProperties[property] = schemaObject[keys][property]; |
|
|
break; |
|
|
} |
|
|
} |
|
|
for(let i in takeProperties){ |
|
|
dynamicContent2+=`\n\t${i}:${JSON.stringify(takeProperties[i])},` |
|
|
} |
|
|
|
|
|
dynamicContent2=dynamicContent2.replace(/\"(DataType\.[a-zA-Z]{1,10}(\([0-9]{1,5}\))?)\"/g,"$1").replace(/\"(\{is\:\/.{1,300}\})\"/gi,"$1") |
|
|
dynamicContent+=`@Column({${dynamicContent2} |
|
|
}) |
|
|
${keys}:${theType};\n\n` |
|
|
fs.appendFileSync("./result.js",dynamicContent); |
|
|
console.log('append') |
|
|
} |
|
|
console.log("finish") |
|
|
} |