typeormgen
Advanced tools
Comparing version 0.11.3 to 0.12.0
79
cli.js
@@ -16,2 +16,10 @@ #!/usr/bin/env node | ||
}, | ||
client: { | ||
alias: 'c', | ||
describe: 'The database client: mysql or sqlite3' | ||
}, | ||
filename: { | ||
alias: 'f', | ||
describe: 'Path to a sqlite database file' | ||
}, | ||
host: { | ||
@@ -109,3 +117,3 @@ alias: 'h', | ||
} else { | ||
dotenv.config({ path: path.resolve(__dirname, '..', '..', '.env') }); | ||
dotenv.config({ path: path.resolve(process.cwd(), '.env') }); | ||
} | ||
@@ -142,3 +150,3 @@ | ||
file: 'typeormgen.json', | ||
dir: __dirname, | ||
dir: process.cwd(), | ||
search: true | ||
@@ -149,2 +157,3 @@ }); | ||
nconf.defaults({ | ||
client: 'mysql', | ||
tabSize: 4 | ||
@@ -164,5 +173,7 @@ }); | ||
const client = nconf.get('client'); | ||
const knex = Knex({ | ||
client: 'mysql', | ||
client, | ||
connection: { | ||
filename: nconf.get('filename'), | ||
host: nconf.get('host'), | ||
@@ -176,22 +187,46 @@ port: nconf.get('port'), | ||
knex.raw(`DESCRIBE ${nconf.get('table')}`).then(([rows]) => { | ||
const info = {}; | ||
rows.forEach(row => { | ||
const openIndex = row.Type.indexOf('('); | ||
info[row.Field] = { | ||
type: openIndex > -1 ? row.Type.slice(0, openIndex - row.Type.length): row.Type, | ||
length: parseInt(row.Type.slice(openIndex + 1, -1), 10), | ||
nullable: row.Null === 'YES' | ||
}; | ||
if (info[row.Field].type === 'decimal') { | ||
info[row.Field].length += 1; | ||
if (client === 'mysql') { | ||
knex.raw(`DESCRIBE ${nconf.get('table')}`).then(([rows]) => { | ||
const info = {}; | ||
rows.forEach(row => { | ||
const openIndex = row.Type.indexOf('('); | ||
info[row.Field] = { | ||
type: openIndex > -1 ? row.Type.slice(0, openIndex - row.Type.length): row.Type, | ||
length: parseInt(row.Type.slice(openIndex + 1, -1), 10), | ||
nullable: row.Null === 'YES' | ||
}; | ||
if (info[row.Field].type === 'decimal') { | ||
info[row.Field].length += 1; | ||
} | ||
}); | ||
try { | ||
writeModel(info, nconf); | ||
} catch (err) { | ||
console.error(err); | ||
process.exit(1); | ||
} | ||
process.exit(); | ||
}); | ||
try { | ||
writeModel(info, nconf); | ||
} catch (err) { | ||
console.error(err); | ||
process.exit(1); | ||
} | ||
process.exit(); | ||
}); | ||
} else { | ||
knex(nconf.get('table')).columnInfo().then(columns => { | ||
const info = {}; | ||
Object.keys(columns).forEach(name => { | ||
const column = columns[name]; | ||
info[name] = { | ||
type: column.type, | ||
length: parseInt(column.maxLength, 10), | ||
nullable: column.nullable | ||
}; | ||
if (info[name].type === 'decimal') { | ||
info[name].length += 1; | ||
} | ||
}); | ||
try { | ||
writeModel(info, nconf); | ||
} catch (err) { | ||
console.error(err); | ||
process.exit(1); | ||
} | ||
process.exit(); | ||
}); | ||
} |
{ | ||
"name": "typeormgen", | ||
"version": "0.11.3", | ||
"version": "0.12.0", | ||
"description": "Generate typeorm models from your database tables", | ||
@@ -31,4 +31,5 @@ "main": "index.js", | ||
"mysql": "^2.15.0", | ||
"nconf": "^0.10.0" | ||
"nconf": "^0.10.0", | ||
"sqlite3": "^4.0.6" | ||
} | ||
} |
@@ -5,4 +5,19 @@ const { boolTypes, dateTypes } = require('./constants'); | ||
let content = `${tab}assign(props?: GenPartial<${conf.get('model')}>) { | ||
${tab}${tab}super.assign(props); | ||
`; | ||
if (conf.get('base')) { | ||
content += `${tab}${tab}super.assign(props); | ||
`; | ||
} else { | ||
content += `${tab}${tab}if (props) { | ||
`; | ||
if (conf.get('toJSON')) { | ||
content += `${tab}${tab}${tab}Object.assign(this, props.toJSON ? props.toJSON() : props); | ||
`; | ||
} else { | ||
content += `${tab}${tab}${tab}Object.assign(this, props); | ||
`; | ||
} | ||
content += `${tab}${tab}} | ||
`; | ||
} | ||
@@ -45,3 +60,3 @@ let transformers = ''; | ||
content += `${tab}} | ||
`; | ||
@@ -48,0 +63,0 @@ |
module.exports = function(info, tab, conf) { | ||
let content = `${tab}constructor(props?: GenPartial<${conf.get('model')}>) { | ||
${tab}${tab}super(props); | ||
${tab}} | ||
} | ||
`; | ||
if (conf.get('base')) { | ||
content += `${tab}${tab}super(props); | ||
`; | ||
} else { | ||
content += `${tab}${tab}this.assign(props); | ||
`; | ||
} | ||
content += `${tab}} | ||
}`; | ||
return content; | ||
}; |
25046
679
8
+ Addedsqlite3@^4.0.6
+ Addedabbrev@1.1.1(transitive)
+ Addedaproba@1.2.0(transitive)
+ Addedare-we-there-yet@1.1.7(transitive)
+ Addedbalanced-match@1.0.2(transitive)
+ Addedbrace-expansion@1.1.11(transitive)
+ Addedchownr@1.1.4(transitive)
+ Addedconcat-map@0.0.1(transitive)
+ Addedconsole-control-strings@1.1.0(transitive)
+ Addeddebug@3.2.7(transitive)
+ Addeddeep-extend@0.6.0(transitive)
+ Addeddelegates@1.0.0(transitive)
+ Addeddetect-libc@1.0.3(transitive)
+ Addedfs-minipass@1.2.7(transitive)
+ Addedfs.realpath@1.0.0(transitive)
+ Addedgauge@2.7.4(transitive)
+ Addedglob@7.2.3(transitive)
+ Addedhas-unicode@2.0.1(transitive)
+ Addediconv-lite@0.4.24(transitive)
+ Addedignore-walk@3.0.4(transitive)
+ Addedinflight@1.0.6(transitive)
+ Addedminimatch@3.1.2(transitive)
+ Addedminipass@2.9.0(transitive)
+ Addedminizlib@1.3.3(transitive)
+ Addednan@2.19.0(transitive)
+ Addedneedle@2.9.1(transitive)
+ Addednode-pre-gyp@0.11.0(transitive)
+ Addednopt@4.0.3(transitive)
+ Addednpm-bundled@1.1.2(transitive)
+ Addednpm-normalize-package-bin@1.0.1(transitive)
+ Addednpm-packlist@1.4.8(transitive)
+ Addednpmlog@4.1.2(transitive)
+ Addedobject-assign@4.1.1(transitive)
+ Addedonce@1.4.0(transitive)
+ Addedos-tmpdir@1.0.2(transitive)
+ Addedosenv@0.1.5(transitive)
+ Addedpath-is-absolute@1.0.1(transitive)
+ Addedrc@1.2.8(transitive)
+ Addedrimraf@2.7.1(transitive)
+ Addedsafe-buffer@5.2.1(transitive)
+ Addedsafer-buffer@2.1.2(transitive)
+ Addedsax@1.3.0(transitive)
+ Addedsemver@5.7.2(transitive)
+ Addedset-blocking@2.0.0(transitive)
+ Addedsignal-exit@3.0.7(transitive)
+ Addedsqlite3@4.2.0(transitive)
+ Addedstrip-json-comments@2.0.1(transitive)
+ Addedtar@4.4.19(transitive)
+ Addedwide-align@1.1.5(transitive)
+ Addedwrappy@1.0.2(transitive)
+ Addedyallist@3.1.1(transitive)