_sql.js 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  1. const fs = require('fs')
  2. const _mappings = () => {
  3. const models = ['save']
  4. for(const model of models) {
  5. _mapping(model)
  6. }
  7. }
  8. const _mapping = modelName => {
  9. const json = `json/${modelName}.json`
  10. const sql = `sql/${modelName}.sql`
  11. const modelObj = _getModelObj(json)
  12. const sqls = []
  13. _conver(sqls, modelObj, '')
  14. saveSql(sql, sqls)
  15. console.log(sqls)
  16. }
  17. const _getModelObj = uri => {
  18. const data = fs.readFileSync(uri)
  19. return JSON.parse(data)
  20. }
  21. const _conver = (sqls, obj, pKey) => {
  22. const sql = []
  23. for(const key in obj) {
  24. // 内置字段
  25. if(key.startsWith('_') && typeof obj[key] !== 'object') {
  26. continue
  27. }
  28. if(obj[key] instanceof Array) {
  29. sqls.push({
  30. key, pKey, type: 'Array'
  31. })
  32. for(const item of obj[key]) {
  33. sqls.push({
  34. key: key + '-object', pKey: key, type: 'object'
  35. })
  36. _conver(sqls,item, key + '-object')
  37. }
  38. continue
  39. }
  40. if(typeof obj[key] === 'object') {
  41. sqls.push({
  42. key, pKey, type: 'object'
  43. })
  44. _conver(sqls, obj[key], key)
  45. continue
  46. }
  47. sqls.push({
  48. key, pKey, type: 'element', name: obj[key],
  49. })
  50. }
  51. }
  52. const saveSql = (uri, sqls) => {
  53. let sql = `insert into mapping(key, pKey, type, name) values `
  54. sql += sqls.map(item => {
  55. return `("${item.key}","${item.pKey}","${item.type}","${item.name || ''}")`
  56. }).join(',')
  57. sql += ';'
  58. fs.writeFileSync(uri, sql)
  59. }
  60. _mappings()