Skip to content

Commit

Permalink
Handle errors when no PK exists.
Browse files Browse the repository at this point in the history
(Not working in Mac OSX 10.11.1 #1)
  • Loading branch information
niklauslee committed May 6, 2016
1 parent 4c861e6 commit 4217e61
Show file tree
Hide file tree
Showing 2 changed files with 27 additions and 20 deletions.
45 changes: 26 additions & 19 deletions DDLGenerator.js
Original file line number Diff line number Diff line change
Expand Up @@ -119,7 +119,12 @@ define(function (require, exports, module) {
*/
DDLGenerator.prototype.getColumnString = function (elem, options) {
var self = this;
var line = self.getId(elem.name, options) + " " + elem.getTypeString();
var line = self.getId(elem.name, options);
var _type = elem.getTypeString();
if (_type.trim().length === 0) {
_type ="INTEGER";
}
line += " " + _type;
if (elem.primaryKey || !elem.nullable) {
line += " NOT NULL";
}
Expand All @@ -141,25 +146,27 @@ define(function (require, exports, module) {
ends.forEach(function (end) {
if (end.cardinality === "1") {
var _pks = self.getPrimaryKeys(end.reference);
var matched = true,
matchedFKs = [];
_pks.forEach(function (pk) {
var r = _.find(fks, function (k) { return k.referenceTo === pk; });
if (r) {
matchedFKs.push(r);
} else {
matched = false;
if (_pks.length > 0) {
var matched = true,
matchedFKs = [];
_pks.forEach(function (pk) {
var r = _.find(fks, function (k) { return k.referenceTo === pk; });
if (r) {
matchedFKs.push(r);
} else {
matched = false;
}
});

if (matched) {
fks = _.difference(fks, matchedFKs);
var line = "ALTER TABLE ";
line += self.getId(elem.name, options) + " ";
line += "ADD FOREIGN KEY (" + _.map(matchedFKs, function (k) { return self.getId(k.name, options); }).join(", ") + ") ";
line += "REFERENCES " + self.getId(_pks[0]._parent.name, options);
line += "(" + _.map(_pks, function (k) { return self.getId(k.name, options); }) + ");";
codeWriter.writeLine(line);
}
});

if (matched) {
fks = _.difference(fks, matchedFKs);
var line = "ALTER TABLE ";
line += self.getId(elem.name, options) + " ";
line += "ADD FOREIGN KEY (" + _.map(matchedFKs, function (k) { return self.getId(k.name, options); }).join(", ") + ") ";
line += "REFERENCES " + self.getId(_pks[0]._parent.name, options);
line += "(" + _.map(_pks, function (k) { return self.getId(k.name, options); }) + ");";
codeWriter.writeLine(line);
}
}
});
Expand Down
2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
"homepage": "https://github.com/niklauslee/staruml-ddl",
"issues": "https://github.com/niklauslee/staruml-ddl/issues",
"keywords": ["ddl", "erd", "database"],
"version": "0.9.0",
"version": "0.9.1",
"author": {
"name": "Minkyu Lee",
"email": "niklaus.lee@gmail.com",
Expand Down

0 comments on commit 4217e61

Please sign in to comment.