Skip to content
This repository was archived by the owner on May 3, 2023. It is now read-only.

Commit 9e7fcc3

Browse files
Merge pull request #14 from eugene-manuilov/develop
Develop changes
2 parents 2ba776c + 54803bb commit 9e7fcc3

27 files changed

+3908
-479
lines changed

.eslintrc.js

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
exports.env = {
2+
es2020: true,
3+
node: true,
4+
jest: true,
5+
};
6+
7+
exports.parser = '@typescript-eslint/parser';
8+
exports.parserOptions = {
9+
ecmaVersion: 11,
10+
sourceType: 'module'
11+
};
12+
13+
exports.extends = [
14+
'standard',
15+
];
16+
17+
exports.plugins = [
18+
'@typescript-eslint',
19+
];
20+
21+
exports.rules = {
22+
'@typescript-eslint/no-unused-vars': [ 'error' ],
23+
'array-bracket-spacing': [ 'error', 'always' ],
24+
'comma-dangle': [ 'error', { arrays: 'always-multiline', objects: 'always-multiline' } ],
25+
'indent': [ 'error', 'tab', { SwitchCase: 1 } ],
26+
'no-console': 'error',
27+
'no-tabs': 'off',
28+
'no-unused-vars': 'off',
29+
'no-useless-constructor': 'off',
30+
'padded-blocks': [ 'error', { classes: 'always' } ],
31+
'semi': [ 'error', 'always' ],
32+
'space-before-function-paren': [ 'error', { named: 'never' } ],
33+
'space-in-parens': [ 'error', 'always' ],
34+
'template-curly-spacing': [ 'error', 'always' ],
35+
};

.github/workflows/nodejs.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -52,4 +52,4 @@ jobs:
5252
working-directory: example
5353
run: test "$(../bin/run)" = "$EXPECTED"
5454
env:
55-
EXPECTED: http://www.plantuml.com/plantuml/png/bP5BIyD054RNpg_uZ9kCMYH2Do4C3MAn6nSbYBiowTpQmSc3p1KIIl-xJL_KGaLdUU_Xd1bcv5at_5Ku8QuDBMn9O9qx2bk9kTFUeqMI8CpkRyRZT7Cab3gYzITrFPdagaqUSYMMrX0yKqCLTpNvtM1XoHalnCwCkMRwg9eE4YjnjIg8bvLPusvhWpMGCIQlMHX5ycHTwe9YlANJfvTq6ZuEXrAiZygwylm_7LjsvxwJBRKS8tj-pyuYi_tbBVdPx-_ewSc5-1uv27vYc-35Kd0RO31G2A9W6_WRUHWACQBIz9_z3G00
55+
EXPECTED: http://www.plantuml.com/plantuml/png/XP7DQiCm48Jl-nHRUh5eGqaX5sDCJ6beBZa4KteBShHjH6p9I1kmgVFkbVC7DMsYctPclXtOgMVfU5UL07UAFhKXhBVKHet0f4YRvAb8BmBBegHU8SEQMsmmIJ3A7-zdiomyWMaAiD6Aq3CvijpMv8-3YdXZbGVmMsrgwMI5PK3s3hGkQ017EgubqvTrBGhy1iI7GnlK2aMCyqKUZSSYZ8siACRtRFdobYsZvyb4mFw2gAtdw_5GlnpcmvGQZZ5__SW7iDMfb2Q_-hjVxveFbfoaS-2t71RyIzvter7N7PWtJUS_m9ICwk_u0m00

.gitignore

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,6 @@
11
/node_modules/
22
/lib/
3+
/examples/**/node_modules/
4+
/examples/**/*.js
5+
/examples/**/*.js.map
36
/tsconfig.tsbuildinfo

.nvmrc

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
8

.vscode/tasks.json

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
{
2+
"version": "2.0.0",
3+
"tasks": [
4+
{
5+
"label": "Build Project",
6+
"type": "shell",
7+
"command": "npm",
8+
"args": ["run", "build"],
9+
"group": {
10+
"kind": "build",
11+
"isDefault": true
12+
}
13+
}
14+
]
15+
}

CHANGELOG.md

Lines changed: 26 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,28 +1,48 @@
11
# Changelog
22

3-
## v1.2.1 (2020-06-18)
3+
## [Unreleased] - TBD
4+
-
5+
6+
## [v1.3.0] (2020-11-12)
7+
- Added an example with a shopping cart database.
8+
- Updated builder to throw an error if no entities have been found.
9+
- Updated builder to use entities instead of classes.
10+
- Updated builder to use entity relationships.
11+
- Fixed issues when the absolute path to the config file was used.
12+
- Fixed issues with foreign keys when sometimes foreign keys were defined before referencing tables.
13+
14+
## [v1.2.1] (2020-06-18)
415
- Fixed puml diagram downloading issue.
516

6-
## v1.2.0 (2020-06-18)
17+
## [v1.2.0] (2020-06-18)
718
- Added GitHub Actions to check build process on push.
819
- Added GitHub Actions to check generated UML.
920
- Added puml format that displays generated UML code.
1021
- Reworked typeorm configuration read to skip connecting to the database.
1122
- Fixed primary column formatting for TXT format (removed HTML tag).
1223

13-
## v1.1.3 (2020-05-25)
24+
## [v1.1.3] (2020-05-25)
1425
- Fixed typo in the readme file.
1526
- Updated dependencies to the latest versions.
1627

17-
## v1.1.2 (2020-01-11)
28+
## [v1.1.2] (2020-01-11)
1829
- Fixed UML generation issue.
1930

20-
## v1.1.1 (2020-01-11)
31+
## [v1.1.1] (2020-01-11)
2132

2233
- Fixed build command issue.
2334

24-
## v1.1.0 (2020-01-11)
35+
## [v1.1.0] (2020-01-11)
2536

2637
- Added `--download` option to download a diagram.
2738
- Added `--include` option to include only specific entities to the diagram.
2839
- Added `--exclude` option to exclude specific entities from the diagram.
40+
41+
[Unreleased]: https://github.com/eugene-manuilov/typeorm-uml/compare/v1.3.0...master
42+
[v1.3.0]: https://github.com/eugene-manuilov/typeorm-uml/compare/v1.2.1...v1.3.0
43+
[v1.2.1]: https://github.com/eugene-manuilov/typeorm-uml/compare/v1.2.0...v1.2.1
44+
[v1.2.0]: https://github.com/eugene-manuilov/typeorm-uml/compare/v1.1.3...v1.2.0
45+
[v1.1.3]: https://github.com/eugene-manuilov/typeorm-uml/compare/v1.1.2...v1.1.3
46+
[v1.1.2]: https://github.com/eugene-manuilov/typeorm-uml/compare/v1.1.1...v1.1.2
47+
[v1.1.1]: https://github.com/eugene-manuilov/typeorm-uml/compare/v1.1.0...v1.1.1
48+
[v1.1.0]: https://github.com/eugene-manuilov/typeorm-uml/releases/tag/v1.1.0

README.md

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,9 @@
1-
# typeorm-uml 1.2.1
1+
# typeorm-uml 1.3.0
2+
3+
[![oclif](https://img.shields.io/badge/cli-oclif-brightgreen.svg)](https://oclif.io)
4+
[![Version](https://img.shields.io/npm/v/typeorm-uml.svg)](https://www.npmjs.com/package/typeorm-uml)
5+
[![Downloads/week](https://img.shields.io/npm/dw/typeorm-uml.svg)](https://www.npmjs.com/package/typeorm-uml)
6+
[![License](https://img.shields.io/npm/l/typeorm-uml.svg)](https://github.com/eugene-manuilov/mynewcli/blob/master/package.json)
27

38
A command line tool to generate UML diagrams for Typeorm projects. It uses [plantuml](https://plantuml.com/) to render diagrams and outputs an URL to a diagram.
49

@@ -59,7 +64,7 @@ ts-node ./node_modules/.bin/typeorm-uml ormconfig.json
5964
typeorm-uml --format=svg --monochrome
6065
```
6166

62-
[![typeorm/typescript-example](http://www.plantuml.com/plantuml/png/bP9DIyD048RFpgyOuoMh5edGImXBWrZinKC9ugriibEpD9iDkrj8AFtl9ltGMgZe76SUtcS6PkAyi7wjAu1hIKjL4tgHLnIs38jAE8Sj9Wc6sVtDT9hsnP3pBxHPKJUGISxRv27dK2f9w3nPChvhoEqRIqMLT01kfUf6MA5HczeKfJMwrzar0S3UYeNmz65iXmmtSBNHv4iZjtYtCw6Io6ASlMPX5B6JSIqqnVYMpfzUqdduE1ups7vdDiRv_-LvvQlpm9CfjJx6xFazExSi3kihSelVBndesGNx0Ja6_CHwuqLJS1lWQCGnY8ATu8_eiGameLeEl_09)](http://www.plantuml.com/plantuml/png/bP9DIyD048RFpgyOuoMh5edGImXBWrZinKC9ugriibEpD9iDkrj8AFtl9ltGMgZe76SUtcS6PkAyi7wjAu1hIKjL4tgHLnIs38jAE8Sj9Wc6sVtDT9hsnP3pBxHPKJUGISxRv27dK2f9w3nPChvhoEqRIqMLT01kfUf6MA5HczeKfJMwrzar0S3UYeNmz65iXmmtSBNHv4iZjtYtCw6Io6ASlMPX5B6JSIqqnVYMpfzUqdduE1ups7vdDiRv_-LvvQlpm9CfjJx6xFazExSi3kihSelVBndesGNx0Ja6_CHwuqLJS1lWQCGnY8ATu8_eiGameLeEl_09)
67+
[![typeorm/typescript-example](http://www.plantuml.com/plantuml/png/XL7DIyCm5B-_l-A9bmOTCc6NKigAEDp5moZYRQJhquOrIKdUeCNkVpVT5rhyo2s_xv2vP-bufsk0gvBUb25ijjH5hS2aIDlahaWl1CkYfe4XmuexR359CCflhnUBB1o1QGfGgPBGCpcot3NaZu0chcpf0VnMcKOwgR4EaOC2hGlS5q9ROpULipeqkXq177jn8vdUhUjGu0SWtXnseYfHnBXypgFfL0JOI4qnlcIhXwTi5TtFPWBsbuZ6UlxR7XvMZ_q1fPPZp1zVyr7O-ZHAaL__l6zGBKSb9-fi-4w7Wb-Jz_raqlU7p7z5vpl0d4mv_F0d)](http://www.plantuml.com/plantuml/png/XL7DIyCm5B-_l-A9bmOTCc6NKigAEDp5moZYRQJhquOrIKdUeCNkVpVT5rhyo2s_xv2vP-bufsk0gvBUb25ijjH5hS2aIDlahaWl1CkYfe4XmuexR359CCflhnUBB1o1QGfGgPBGCpcot3NaZu0chcpf0VnMcKOwgR4EaOC2hGlS5q9ROpULipeqkXq177jn8vdUhUjGu0SWtXnseYfHnBXypgFfL0JOI4qnlcIhXwTi5TtFPWBsbuZ6UlxR7XvMZ_q1fPPZp1zVyr7O-ZHAaL__l6zGBKSb9-fi-4w7Wb-Jz_raqlU7p7z5vpl0d4mv_F0d)
6368

6469
## Contribute
6570

examples/shopping-cart/README.md

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
# Shopping Cart Database
2+
3+
The Shopping Cart Database in MySQL as the starting point to develop the online shopping cart websites and applications.
4+
5+
## Database Schema
6+
7+
The visual database design of the Shopping Cart Database is shown below:
8+
9+
[![shopping cart example](http://www.plantuml.com/plantuml/png/xLTDRnen4BtxLxZA1TH63QdIIWYXq2Pfa4WgfQkgFKLcFG6BtVNMzX9G4tvxRRDyh6q42abwAITuCtwUZ-UnEPMA25Ma2K9lADon370-WcbjKiUjVdlIUjzlBmsAz1Cm5iWKKrCymQqMhaNl3YukElfJn-qsGaD60Ki50hYQvY3dG0fgoAb4I8vObXD1KfneIkE1kT2sDKFACnuF1K_rZg80XERxubW7UiiKfBYE_o2Ctzf0CQEutiIVkr-xrr7j-AYkBGUvuBI8LPUw1iFXeN9KDF6FpisNoyvDhN5aiLom69huelUj4zKQnmQYJCQyo5GL_LqGMuqc_dxLwVKCwqU3arYniMQ8kjU_3DWmO2o0AA0TpN7MYSwZxjMvHekS1j2OPmhCRj7vpmWzhfL1mO2BwGvL848JUEdgQ1DO9Vpfn82wGIIg6ifAoAGOUE2cuCh2tngwfxTffbUijZpPQKS1OmRtUqXZjsgL-GkYM3PmUvuN_OJ98T2Tshxqth7nYWosflSAlTrUuaA2s5Tris1eiaXJ8gRpyjhmDB6U8MuZNkH4oo7FzpZFczfj1x1qGCYet54MN50G-yv5I_8wW_4vPg0I99DcmlBiYNBSa77CgQ_5aC9Iw-W8H15Lo9V8rmRxn4mbIAdhP70tBpw2p3zZmInaqO-u8acrnqPrPy7kApAf0dB8yjpEp8gRpwarcd9t-eSbDj0oe86mxfYGwfgauDAaZD84GfQ4R5Z1-wmodkpSWfImnAFG3vf623psxZ9xBAgOJdlCiXZyUq-dBVphy1bKPUIoLLJFMCjPk9YpO3Lp8kMzrlqbaSELxOFjBw4fovnHFDOZami7531WzYtgbiI4sEC3mxA6CbrfNhbST5VkRCZU8qoeVteU_qjy9ualNeVXH_C2xVgzApsM5wRZuE_WlSusBLqww1KXtjNVdCU7myE71wir7otfqJApHrvwpt-ZobFSMUGycikbLTHp2b8iO2DrjFOKAM6B1F05o_f5NbaICAosM0Hi4NiKrm6lvyiwEfLn7Tpgc9PkD-cl29tgwMF-HFy5)](http://www.plantuml.com/plantuml/png/xLTDRnen4BtxLxZA1TH63QdIIWYXq2Pfa4WgfQkgFKLcFG6BtVNMzX9G4tvxRRDyh6q42abwAITuCtwUZ-UnEPMA25Ma2K9lADon370-WcbjKiUjVdlIUjzlBmsAz1Cm5iWKKrCymQqMhaNl3YukElfJn-qsGaD60Ki50hYQvY3dG0fgoAb4I8vObXD1KfneIkE1kT2sDKFACnuF1K_rZg80XERxubW7UiiKfBYE_o2Ctzf0CQEutiIVkr-xrr7j-AYkBGUvuBI8LPUw1iFXeN9KDF6FpisNoyvDhN5aiLom69huelUj4zKQnmQYJCQyo5GL_LqGMuqc_dxLwVKCwqU3arYniMQ8kjU_3DWmO2o0AA0TpN7MYSwZxjMvHekS1j2OPmhCRj7vpmWzhfL1mO2BwGvL848JUEdgQ1DO9Vpfn82wGIIg6ifAoAGOUE2cuCh2tngwfxTffbUijZpPQKS1OmRtUqXZjsgL-GkYM3PmUvuN_OJ98T2Tshxqth7nYWosflSAlTrUuaA2s5Tris1eiaXJ8gRpyjhmDB6U8MuZNkH4oo7FzpZFczfj1x1qGCYet54MN50G-yv5I_8wW_4vPg0I99DcmlBiYNBSa77CgQ_5aC9Iw-W8H15Lo9V8rmRxn4mbIAdhP70tBpw2p3zZmInaqO-u8acrnqPrPy7kApAf0dB8yjpEp8gRpwarcd9t-eSbDj0oe86mxfYGwfgauDAaZD84GfQ4R5Z1-wmodkpSWfImnAFG3vf623psxZ9xBAgOJdlCiXZyUq-dBVphy1bKPUIoLLJFMCjPk9YpO3Lp8kMzrlqbaSELxOFjBw4fovnHFDOZami7531WzYtgbiI4sEC3mxA6CbrfNhbST5VkRCZU8qoeVteU_qjy9ualNeVXH_C2xVgzApsM5wRZuE_WlSusBLqww1KXtjNVdCU7myE71wir7otfqJApHrvwpt-ZobFSMUGycikbLTHp2b8iO2DrjFOKAM6B1F05o_f5NbaICAosM0Hi4NiKrm6lvyiwEfLn7Tpgc9PkD-cl29tgwMF-HFy5)
10+
11+
Credits: [https://github.com/tutorials24x7/shopping-cart-database-mysql](https://github.com/tutorials24x7/shopping-cart-database-mysql)
Lines changed: 82 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,82 @@
1+
import {
2+
Column,
3+
Entity,
4+
Index,
5+
JoinColumn,
6+
ManyToOne,
7+
OneToMany,
8+
PrimaryGeneratedColumn
9+
} from 'typeorm';
10+
11+
import { User } from './User';
12+
import { CartItem } from './CartItem';
13+
14+
@Index( 'idx_cart_user', [ 'userId' ], {} )
15+
@Entity( 'cart', { schema: 'shop' } )
16+
export class Cart {
17+
18+
@PrimaryGeneratedColumn( { type: 'bigint', name: 'id' } )
19+
id: string;
20+
21+
@Column( 'bigint', { name: 'userId', nullable: true } )
22+
userId: string | null;
23+
24+
@Column( 'varchar', { name: 'sessionId', length: 100 } )
25+
sessionId: string;
26+
27+
@Column( 'varchar', { name: 'token', length: 100 } )
28+
token: string;
29+
30+
@Column( 'smallint', { name: 'status', default: () => "'0'" } )
31+
status: number;
32+
33+
@Column( 'varchar', { name: 'firstName', nullable: true, length: 50 } )
34+
firstName: string | null;
35+
36+
@Column( 'varchar', { name: 'middleName', nullable: true, length: 50 } )
37+
middleName: string | null;
38+
39+
@Column( 'varchar', { name: 'lastName', nullable: true, length: 50 } )
40+
lastName: string | null;
41+
42+
@Column( 'varchar', { name: 'mobile', nullable: true, length: 15 } )
43+
mobile: string | null;
44+
45+
@Column( 'varchar', { name: 'email', nullable: true, length: 50 } )
46+
email: string | null;
47+
48+
@Column( 'varchar', { name: 'line1', nullable: true, length: 50 } )
49+
line1: string | null;
50+
51+
@Column( 'varchar', { name: 'line2', nullable: true, length: 50 } )
52+
line2: string | null;
53+
54+
@Column( 'varchar', { name: 'city', nullable: true, length: 50 } )
55+
city: string | null;
56+
57+
@Column( 'varchar', { name: 'province', nullable: true, length: 50 } )
58+
province: string | null;
59+
60+
@Column( 'varchar', { name: 'country', nullable: true, length: 50 } )
61+
country: string | null;
62+
63+
@Column( 'datetime', { name: 'createdAt' } )
64+
createdAt: Date;
65+
66+
@Column( 'datetime', { name: 'updatedAt', nullable: true } )
67+
updatedAt: Date | null;
68+
69+
@Column( 'text', { name: 'content', nullable: true } )
70+
content: string | null;
71+
72+
@ManyToOne( () => User, ( user ) => user.carts, {
73+
onDelete: 'RESTRICT',
74+
onUpdate: 'RESTRICT',
75+
} )
76+
@JoinColumn( [ { name: 'userId', referencedColumnName: 'id' } ] )
77+
user: User;
78+
79+
@OneToMany( () => CartItem, ( cartItem ) => cartItem.cart )
80+
cartItems: CartItem[];
81+
82+
}
Lines changed: 65 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,65 @@
1+
import {
2+
Column,
3+
Entity,
4+
Index,
5+
JoinColumn,
6+
ManyToOne,
7+
PrimaryGeneratedColumn
8+
} from 'typeorm';
9+
10+
import { Cart } from './Cart';
11+
import { Product } from './Product';
12+
13+
@Index( 'idx_cart_item_product', [ 'productId' ], {} )
14+
@Index( 'idx_cart_item_cart', [ 'cartId' ], {} )
15+
@Entity( 'cart_item', { schema: 'shop' } )
16+
export class CartItem {
17+
18+
@PrimaryGeneratedColumn( { type: 'bigint', name: 'id' } )
19+
id: string;
20+
21+
@Column( 'bigint', { name: 'productId' } )
22+
productId: string;
23+
24+
@Column( 'bigint', { name: 'cartId' } )
25+
cartId: string;
26+
27+
@Column( 'varchar', { name: 'sku', length: 100 } )
28+
sku: string;
29+
30+
@Column( 'float', { name: 'price', precision: 12, default: () => "'0'" } )
31+
price: number;
32+
33+
@Column( 'float', { name: 'discount', precision: 12, default: () => "'0'" } )
34+
discount: number;
35+
36+
@Column( 'smallint', { name: 'quantity', default: () => "'0'" } )
37+
quantity: number;
38+
39+
@Column( 'tinyint', { name: 'active', width: 1, default: () => "'0'" } )
40+
active: boolean;
41+
42+
@Column( 'datetime', { name: 'createdAt' } )
43+
createdAt: Date;
44+
45+
@Column( 'datetime', { name: 'updatedAt', nullable: true } )
46+
updatedAt: Date | null;
47+
48+
@Column( 'text', { name: 'content', nullable: true } )
49+
content: string | null;
50+
51+
@ManyToOne( () => Cart, ( cart ) => cart.cartItems, {
52+
onDelete: 'RESTRICT',
53+
onUpdate: 'RESTRICT',
54+
} )
55+
@JoinColumn( [ { name: 'cartId', referencedColumnName: 'id' } ] )
56+
cart: Cart;
57+
58+
@ManyToOne( () => Product, ( product ) => product.cartItems, {
59+
onDelete: 'RESTRICT',
60+
onUpdate: 'RESTRICT',
61+
} )
62+
@JoinColumn( [ { name: 'productId', referencedColumnName: 'id' } ] )
63+
product: Product;
64+
65+
}

0 commit comments

Comments
 (0)