From a03b305d2e0ba364029e603d86e64250c8d2854f Mon Sep 17 00:00:00 2001 From: David Said Date: Fri, 5 Aug 2022 16:25:23 +1000 Subject: [PATCH] feat(node): add GraphQL (#660) Add a GraphQL programming framework node --- config.py | 3 ++- diagrams/programming/framework.py | 5 +++++ docs/nodes/onprem.md | 2 +- docs/nodes/programming.md | 1 + resources/programming/framework/graphql.png | Bin 0 -> 15383 bytes 5 files changed, 9 insertions(+), 2 deletions(-) create mode 100644 resources/programming/framework/graphql.png diff --git a/config.py b/config.py index f527ab6..cbec9c9 100644 --- a/config.py +++ b/config.py @@ -411,7 +411,8 @@ ALIASES = { }, "programming": { "framework": { - "Fastapi": "FastAPI" + "Fastapi": "FastAPI", + "Graphql": "GraphQL" }, "language": { "Javascript": "JavaScript", diff --git a/diagrams/programming/framework.py b/diagrams/programming/framework.py index 64fd639..e4ba3b6 100644 --- a/diagrams/programming/framework.py +++ b/diagrams/programming/framework.py @@ -36,6 +36,10 @@ class Flutter(_Framework): _icon = "flutter.png" +class Graphql(_Framework): + _icon = "graphql.png" + + class Laravel(_Framework): _icon = "laravel.png" @@ -67,3 +71,4 @@ class Vue(_Framework): # Aliases FastAPI = Fastapi +GraphQL = Graphql diff --git a/docs/nodes/onprem.md b/docs/nodes/onprem.md index 0ec4068..1b6e690 100644 --- a/docs/nodes/onprem.md +++ b/docs/nodes/onprem.md @@ -158,8 +158,8 @@ Node classes list of onprem provider. - **diagrams.onprem.monitoring.Dynatrace** - **diagrams.onprem.monitoring.Grafana** - **diagrams.onprem.monitoring.Humio** -- **diagrams.onprem.monitoring.Newrelic** - **diagrams.onprem.monitoring.Nagios** +- **diagrams.onprem.monitoring.Newrelic** - **diagrams.onprem.monitoring.PrometheusOperator** - **diagrams.onprem.monitoring.Prometheus** - **diagrams.onprem.monitoring.Sentry** diff --git a/docs/nodes/programming.md b/docs/nodes/programming.md index 3bfb907..df81389 100644 --- a/docs/nodes/programming.md +++ b/docs/nodes/programming.md @@ -41,6 +41,7 @@ Node classes list of programming provider. - **diagrams.programming.framework.Fastapi**, **FastAPI** (alias) - **diagrams.programming.framework.Flask** - **diagrams.programming.framework.Flutter** +- **diagrams.programming.framework.Graphql**, **GraphQL** (alias) - **diagrams.programming.framework.Laravel** - **diagrams.programming.framework.Micronaut** - **diagrams.programming.framework.Rails** diff --git a/resources/programming/framework/graphql.png b/resources/programming/framework/graphql.png new file mode 100644 index 0000000000000000000000000000000000000000..fe9e52d5d56a04ac81c60420d379bd88307c7e10 GIT binary patch literal 15383 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 A=>Px# literal 0 HcmV?d00001