1 |
|
2 |
|
3 |
|
4 |
|
5 |
|
6 |
|
7 |
|
8 |
|
9 |
|
10 |
|
11 |
|
12 |
|
13 |
|
14 |
|
15 |
|
16 |
|
17 |
|
18 |
|
19 |
|
20 |
|
21 |
|
22 |
|
23 | var fs = require('fs');
|
24 | var path = require('path');
|
25 | var inflection = require('inflection');
|
26 | var root_app = process.cwd();
|
27 | var migrationTime = require('../lib/helpers/migration_time.js');
|
28 | var train_generate = require('./train_generate.js');
|
29 |
|
30 | module.exports = function() {
|
31 | var model_name = process.argv[4];
|
32 | var model = model_name.toLowerCase();
|
33 | var model_plural = inflection.pluralize(model);
|
34 | var migration_file_name = migrationTime() + '_create_' + model_plural;
|
35 |
|
36 | var model_attrs = "";
|
37 | var migration_attrs = "";
|
38 | var require_modules = "";
|
39 |
|
40 | for (var i = 5; i < process.argv.length; i++) {
|
41 | var attr_str = process.argv[i].split(':');
|
42 | var attr_name = attr_str[0].toLowerCase();
|
43 | var db_type = attr_str[1].toUpperCase();
|
44 | if (db_type == 'REFERENCES') {
|
45 |
|
46 | model_attrs += '\t' + attr_name + '_id: {\n';
|
47 | model_attrs += '\t\ttype: Sequelize.INTEGER,\n';
|
48 | model_attrs += '\t\treferences: {\n';
|
49 | model_attrs += "\t\t\tmodel: '"+attr_name+"',\n";
|
50 | model_attrs += "\t\t\tkey: 'id'\n";
|
51 | model_attrs += '\t\t}\n';
|
52 | model_attrs += '\t},\n';
|
53 |
|
54 |
|
55 | migration_attrs += "\t\t\t" + attr_name + "_id: {\n";
|
56 | migration_attrs += "\t\t\t\ttype: DataTypes.INTEGER,\n";
|
57 | migration_attrs += "\t\t\t\treferences: {\n";
|
58 | migration_attrs += "\t\t\t\t\tmodel: '"+attr_name+"',\n";
|
59 | migration_attrs += "\t\t\t\t\tkey: 'id',\n";
|
60 | migration_attrs += "\t\t\t\t}\n";
|
61 | migration_attrs += "\t\t\t},\n";
|
62 | } else {
|
63 |
|
64 | model_attrs += '\t' + attr_name + ': {\n';
|
65 | model_attrs += '\t\ttype: Sequelize.' + db_type + ',\n';
|
66 | model_attrs += '\t},\n';
|
67 |
|
68 |
|
69 | migration_attrs += "\t\t\t" + attr_name + ": DataTypes." + db_type + ",\n";
|
70 | }
|
71 | }
|
72 |
|
73 | var file_templates = {
|
74 | 'app/models/model.js': [
|
75 | {
|
76 | file_path: 'app/models/' + model + '.js',
|
77 | info_render: {
|
78 | model_name: model_name,
|
79 | model_attrs: model_attrs,
|
80 | model: model,
|
81 | require_modules: require_modules
|
82 | }
|
83 | }
|
84 | ],
|
85 | 'db/migrate/migration.js': [
|
86 | {
|
87 | file_path: 'db/migrate/' + migration_file_name + '.js',
|
88 | info_render: {
|
89 | model: model,
|
90 | migration_attrs: migration_attrs
|
91 | }
|
92 | }
|
93 | ],
|
94 | 'test/models/model_test.js': [
|
95 | {
|
96 | file_path: 'test/models/' + model + '_test.js',
|
97 | info_render: {
|
98 | model_name: model_name
|
99 | }
|
100 | }
|
101 | ],
|
102 | }
|
103 |
|
104 | var lib = path.join(path.dirname(fs.realpathSync(__filename)), '../');
|
105 | var path_templ = lib + 'template/model';
|
106 |
|
107 | train_generate(path_templ, null, file_templates);
|
108 | }
|