Parses .dbs
files from the DbSchema Diagram Designer and Query Tool from Wise Coders Solutions.
npm install dbschema-parser
var dbSchema = require('dbschema-parser');
var parser = new dbSchema.Parser(filePath);
Single instance. Top-most object.
databases
:array[Database]
: Array of Database objects.path
:string
: Path to supplied.dbs
file.xml
:string
: Contents of.dbs
file in raw XML format.object
:object
: Parsed.dbs
file in JSON object format.json
:string
: Parsed.dbs
file in pretty-printed JSON format (non-object).
Extrapolation of the DbSchema Project
object. Assumes all schemas are contained within a single database.
parser
:Parser
: Reference to parent Parser object.project
:object
: Reference to raw DbSchema object in JSON object format.name
:string
: Name of database.id
:string
: ID of Project, as supplied by DbSchema.template
:string
: Template of Project, as supplied by DbSchema.type
:string
: Database type (ie, MySql, MariaDb, MongoDb, etc.).schemas
:array[Schema]
: Array of Schema objects contained within Database
database
:Database
: Reference to parent Database object.schema
:object
: Reference to raw DbSchema object in JSON object format.name
:string
: Name of schema.tables
:array[Table]
: Array of Table objects contained within Database.views
:array[Table]
: Array of Table objects contained within Database.
Note: Due to the near-identical structure of both, the Table object is used for both tables and views.
schema
:Schema
: Reference to parent Schema object.table
:object
: Reference to raw DbSchema object in JSON object format.name
:string
: Name of table or view.keyColumns
:array[Column]
: Array of Column objects within this primary key Table Index.isView
:boolean
: Indicates whether the table is actually a view.columns
:array[Column]
: Array of Column objects contained within the Table.indices
:array[TableIndex]
: Array of Table Index objects contained within the Table.
table
:Table
: Reference to parent Table object.column
:object
: Reference to raw DbSchema object in JSON object format.name
:string
: Name of column.type
:string
: Type of column.length
:number
: If supplied, the length of the column.jt
:number
: (See DbSchema documentation.)isPrimary
:boolean
: Column a member of the primary key index.mandatory
:boolean
: Column is required orNOT NULL
relationships
:array[Column]
: (not required) Any columns referencing this column in a foreign key.parent
:object
: (not required) The target PK column if a foreign key exists:
parent: {
schema: {
name: '',
item:
},
table: {
name: '',
item:
},
column: {
name: '',
item:
}
}
table
:Table
: Reference to parent Table object.index
:object
: Reference to raw DbSchema object in JSON object format.name
:string
: Name of index (usually generated by database or DbSchema).columns
:array[Column]
: Array of Column objects within this index.type
:string
: Type name, as supplied by DbSchema (ie,NORMAL
,PRIMARY_KEY
,UNIQUE
, etc.).isUnique
:boolean
: Indicates if the column combination must be unique (also true for the primary key).isPrimary
:boolean
: Table Index is the primary key.
Generally speaking, the Parser is meant to be used for navigating, or "walking", the DbSchema-generated hierarchy. However, for convenience, one operation is available:
Prints the hierarchy in a human-readable YML-like indented structure:
Database: resources
Schema: geography
Table: city
Column: id
Relationships:
resources.geography.postal_code.city_id
Column: state_id
Primary:
Schema: geography
Table: state
Column: id
Column: name
Index: idx_city (UNIQUE)
Column: state_id
Primary:
Schema: geography
Table: state
Column: id
Column: name
Index: idx_city_0 (NORMAL)
Column: state_id
Primary:
Schema: geography
Table: state
Column: id
Index: pk_city (PRIMARY_KEY)
Column: id
Table: country
Column: id
Relationships:
resources.geography.postal_code.country_id
resources.geography.state.country_id
Column: name
Index: idx_country (UNIQUE)
Column: name
Index: pk_country (UNIQUE)
Column: id
Table: postal_code
Column: id
Column: country_id
Primary:
Schema: geography
Table: country
Column: id
Column: state_id
Primary:
Schema: geography
Table: state
Column: id
Column: city_id
Primary:
Schema: geography
Table: city
Column: id
Column: value
Index: pk_postal_code (PRIMARY_KEY)
Column: id
Index: idx_postal_code (UNIQUE)
Column: country_id
Primary:
Schema: geography
Table: country
Column: id
Column: state_id
Primary:
Schema: geography
Table: state
Column: id
Column: city_id
Primary:
Schema: geography
Table: city
Column: id
Column: value
Index: idx_postal_code_0 (NORMAL)
Column: country_id
Primary:
Schema: geography
Table: country
Column: id
Index: idx_postal_code_1 (NORMAL)
Column: state_id
Primary:
Schema: geography
Table: state
Column: id
Index: idx_postal_code_2 (NORMAL)
Column: city_id
Primary:
Schema: geography
Table: city
Column: id
Table: state
Column: id
Relationships:
resources.geography.city.state_id
resources.geography.postal_code.state_id
Column: country_id
Primary:
Schema: geography
Table: country
Column: id
Column: name
Index: idx_state (UNIQUE)
Column: country_id
Primary:
Schema: geography
Table: country
Column: id
Column: name
Index: idx_state_0 (NORMAL)
Column: country_id
Primary:
Schema: geography
Table: country
Column: id
Index: pk_state_0 (PRIMARY_KEY)
Column: id
MEAN Factory is an initiative to help teach software development focusing on the MEAN Stack (Mongo, ExpressJS, AngularJS, NodeJS). For more information, visit our web site or email us: