Add discoverSchema
This commit is contained in:
parent
fcdd8c2bca
commit
88f174ee39
|
@ -86,10 +86,16 @@ function loadSchemasSync(schemaFile, dataSource) {
|
||||||
dataSource = new DataSource('memory');
|
dataSource = new DataSource('memory');
|
||||||
}
|
}
|
||||||
|
|
||||||
var models = {};
|
|
||||||
|
|
||||||
// Read the schema JSON file
|
// Read the schema JSON file
|
||||||
var schemas = JSON.parse(fs.readFileSync(schemaFile));
|
var schemas = JSON.parse(fs.readFileSync(schemaFile));
|
||||||
|
|
||||||
|
return parseSchemas(dataSource, schemas);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
function parseSchemas(dataSource, schemas) {
|
||||||
|
var models = {};
|
||||||
|
|
||||||
if (Array.isArray(schemas)) {
|
if (Array.isArray(schemas)) {
|
||||||
// An array already
|
// An array already
|
||||||
} else if (schemas.properties && schemas.name) {
|
} else if (schemas.properties && schemas.name) {
|
||||||
|
@ -129,3 +135,4 @@ function loadSchemasSync(schemaFile, dataSource) {
|
||||||
}
|
}
|
||||||
|
|
||||||
exports.loadSchemasSync = loadSchemasSync;
|
exports.loadSchemasSync = loadSchemasSync;
|
||||||
|
exports.parseSchemas = parseSchemas;
|
||||||
|
|
|
@ -346,6 +346,54 @@ DataSource.prototype.discoverForeignKeys= function(owner, table, cb) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Discover ADL schema from a given table/view
|
||||||
|
* @param owner
|
||||||
|
* @param table
|
||||||
|
* @param cb
|
||||||
|
*/
|
||||||
|
DataSource.prototype.discoverSchema = function(owner, table, cb) {
|
||||||
|
var dataSourceName = this.name;
|
||||||
|
this.discoverModelProperties(owner, table, function (err, columns) {
|
||||||
|
if (err) {
|
||||||
|
cb && cb(err);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if(!columns) {
|
||||||
|
cb && cb();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
var schema = {
|
||||||
|
name: table,
|
||||||
|
options: {
|
||||||
|
},
|
||||||
|
properties: {
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
schema.options[dataSourceName] = {
|
||||||
|
schema: owner,
|
||||||
|
table: table
|
||||||
|
};
|
||||||
|
columns.forEach(function (item) {
|
||||||
|
var i = item;
|
||||||
|
schema.properties[item.columnName] =
|
||||||
|
{
|
||||||
|
type: item.type,
|
||||||
|
required: (item.nullable === 'N'),
|
||||||
|
length: item.dataLength
|
||||||
|
};
|
||||||
|
schema.properties[item.columnName][dataSourceName] = {
|
||||||
|
columnName: i.columnName,
|
||||||
|
dataType: i.dataType,
|
||||||
|
nullable: i.nullable
|
||||||
|
};
|
||||||
|
});
|
||||||
|
|
||||||
|
cb && cb(null, schema);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Check whether migrations needed
|
* Check whether migrations needed
|
||||||
* This method make sense only for sql adapters.
|
* This method make sense only for sql adapters.
|
||||||
|
|
Loading…
Reference in New Issue