https://github.com/jwebcoder/plantuml2mysql
Parse plantuml class diagrams into mysql
https://github.com/jwebcoder/plantuml2mysql
Last synced: 12 months ago
JSON representation
Parse plantuml class diagrams into mysql
- Host: GitHub
- URL: https://github.com/jwebcoder/plantuml2mysql
- Owner: JWebCoder
- License: mit
- Created: 2020-05-05T23:36:22.000Z (about 6 years ago)
- Default Branch: master
- Last Pushed: 2023-01-06T05:07:04.000Z (over 3 years ago)
- Last Synced: 2025-05-08T03:16:10.209Z (about 1 year ago)
- Language: TypeScript
- Size: 647 KB
- Stars: 7
- Watchers: 2
- Forks: 1
- Open Issues: 12
-
Metadata Files:
- Readme: README.md
- Funding: .github/FUNDING.yml
- License: LICENSE
Awesome Lists containing this project
README
# plantuml2mysql
Parse plantuml class diagrams into mysql
## Installation
npm i plantuml2mysql
## Usage
### Terminal
`npx plantuml2mysql database.md database.sql`
### By code
```typescript
import plantuml2mysql from 'plantuml2mysql'
import fs from 'fs'
import path from 'path'
plantuml2mysql(path.join(__dirname, './database.md')).then(
(result) => {
fs.writeFileSync('./database.sql', result)
}
)
```
## Plantuml Class example
```
@startuml database diagram
class Cart {
#id INT AUTO_INCREMENT
-userId UNIQUE REF(user.id)
timestamp TIMESTAMP
}
class CartIngredientList {
+cartId REF(cart.id)
+ingredientId REF(ingredient.id)
..
quantity TINYINT NN
later BOOLEAN DEFAULT(true)
checked BOOLEAN NN DEFAULT(false)
}
class Ingredient {
#id INT AUTO_INCREMENT
..
name VARCHAR(70) UNIQUE
}
class User {
#id INT AUTO_INCREMENT
-roleId NN DEFAULT(0) REF(role.id)
..
name VARCHAR(70) NN DEFAULT(Joao)
age SMALLINT
dateOfBirth DATE
email VARCHAR(320) NN UNIQUE
gender TINYINT
floatField FLOAT
doubleField DOUBLE
}
class Role {
#id INT AUTO_INCREMENT
..
name VARCHAR(20) NN
}
class NoPrimaryKeyTable {
parameter INT
}
User "0..*" o--o "1" Role
User "1" *--o "0..1" Cart
Cart "0..*" o--o "1..*" Ingredient
(Cart, Ingredient) .. CartIngredientList
@enduml
```

## Column structure
**Example columns**
- \#id INT AUTO_INCREMENT
- checked BOOLEAN NN DEFAULT(false)
**Structure**
1. Key type (#, -, +), this is optional
2. Column name
3. column data type
4. any other properties
## Detailed metadata
|meta data| description | example |
|-|-|-|
| # | Primary key | #id |
| - | Foreign key | -userId |
| + | Primary key and Foreign key, for relation tables | +cartId |
| AUTO_INCREMENT | auto increment field |
| UNIQUE| adds a unique index to the field |
| REF(table.column) | sets the foreign key reference | REF(user.id) |
| NN | Not Null field |
| DEFAULT(value) | sets the default value | DEFAULT(10) |