From c67f14b211b98bd6db92bc767602c79191c72525 Mon Sep 17 00:00:00 2001 From: Hakan Dilek Date: Tue, 20 Jun 2023 22:44:11 +0200 Subject: [PATCH 1/2] feat: introduce ignoreViews parameter --- .gitignore | 3 ++- README.md | 11 +++++++++ __tests__/ignoreViews.test.ts | 41 ++++++++++++++++++++++++++++++++ prisma/ignore-views.prisma | 44 +++++++++++++++++++++++++++++++++++ src/generate.ts | 26 ++++++++++++++++++++- 5 files changed, 123 insertions(+), 2 deletions(-) create mode 100644 __tests__/ignoreViews.test.ts create mode 100644 prisma/ignore-views.prisma diff --git a/.gitignore b/.gitignore index 8bf9f74..19f65a7 100644 --- a/.gitignore +++ b/.gitignore @@ -7,4 +7,5 @@ prisma/debug coverage !__test__/*.ts __tests__/*.svg -__tests__/*.png \ No newline at end of file +__tests__/*.png +.idea diff --git a/README.md b/README.md index 31b0781..beb973c 100644 --- a/README.md +++ b/README.md @@ -151,6 +151,17 @@ generator erd { } ``` +### Ignore views + +If you enable this option, view entities will be hidden. +This is useful if you want to reduce the number of entities and focus on the tables without displaying all the views. + +```prisma +generator erd { + provider = "prisma-erd-generator" + ignoreViews = true +} +``` ### Include relation from field By default this module skips relation fields in the result diagram. For example fields `userId` and `productId` will not be generated from this prisma schema. diff --git a/__tests__/ignoreViews.test.ts b/__tests__/ignoreViews.test.ts new file mode 100644 index 0000000..2562bdd --- /dev/null +++ b/__tests__/ignoreViews.test.ts @@ -0,0 +1,41 @@ +import * as child_process from 'child_process'; + +test('ignore-views.prisma', async () => { + const fileName = 'ignoreViews.svg'; + const folderName = '__tests__'; + child_process.execSync(`rm -f ${folderName}/${fileName}`); + child_process.execSync( + `prisma generate --schema ./prisma/ignore-views.prisma` + ); + const listFile = child_process.execSync(`ls -la ${folderName}/${fileName}`); + // did it generate a file + expect(listFile.toString()).toContain(fileName); + + const svgAsString = child_process + .execSync(`cat ${folderName}/${fileName}`) + .toString(); + + // did it generate a file without enum + expect(svgAsString).toContain(` { ); const tableOnly = config.tableOnly === 'true'; const ignoreEnums = config.ignoreEnums === 'true'; + const ignoreViews = config.ignoreViews === 'true'; const includeRelationFromFields = config.includeRelationFromFields === 'true'; const disabled = Boolean(process.env.DISABLE_ERD); @@ -428,6 +451,7 @@ export default async (options: GeneratorOptions) => { const mermaid = renderDml(dml, { tableOnly, ignoreEnums, + ignoreViews, includeRelationFromFields, }); if (debug && mermaid) { From 0a27c5edef1e5b51901f7498da34c859568d679a Mon Sep 17 00:00:00 2001 From: Hakan Dilek Date: Tue, 20 Jun 2023 23:11:07 +0200 Subject: [PATCH 2/2] Add @hakandilek as a contributor --- .all-contributorsrc | 9 +++++++++ README.md | 3 ++- 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/.all-contributorsrc b/.all-contributorsrc index e0f322d..efdb3b7 100644 --- a/.all-contributorsrc +++ b/.all-contributorsrc @@ -153,6 +153,15 @@ "contributions": [ "code" ] + }, + { + "login": "hakandilek", + "name": "Hakan Dilek", + "avatar_url": "https://avatars.githubusercontent.com/u/1072473?v=4", + "profile": "http://www.dilek.me/", + "contributions": [ + "code" + ] } ], "contributorsPerLine": 7, diff --git a/README.md b/README.md index beb973c..c335541 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,7 @@ # Prisma Entity Relationship Diagram Generator -[![All Contributors](https://img.shields.io/badge/all_contributors-15-orange.svg?style=flat-square)](#contributors-) +[![All Contributors](https://img.shields.io/badge/all_contributors-16-orange.svg?style=flat-square)](#contributors-) Prisma generator to create an ER Diagram every time you generate your prisma client. @@ -233,6 +233,7 @@ Thanks goes to these wonderful people ([emoji key](https://allcontributors.org/d Tristan Chin
Tristan Chin

💻 + Hakan Dilek
Hakan Dilek

💻