From 89d84472e656ab05f52bd49e70b2347a15999582 Mon Sep 17 00:00:00 2001 From: Luca Date: Wed, 29 Jul 2020 14:11:35 +0200 Subject: [PATCH] Added Snowflake as a SaaS product (#245) * feat: added snowflake icon * feat: autogenerated snowflake Co-authored-by: Luca Terrazzan --- diagrams/saas/analytics.py | 4 ++++ docs/nodes/saas.md | 1 + resources/saas/analytics/snowflake.png | Bin 0 -> 16205 bytes 3 files changed, 5 insertions(+) create mode 100644 resources/saas/analytics/snowflake.png diff --git a/diagrams/saas/analytics.py b/diagrams/saas/analytics.py index 8ab1161..20659b3 100644 --- a/diagrams/saas/analytics.py +++ b/diagrams/saas/analytics.py @@ -8,6 +8,10 @@ class _Analytics(_Saas): _icon_dir = "resources/saas/analytics" +class Snowflake(_Analytics): + _icon = "snowflake.png" + + class Stitch(_Analytics): _icon = "stitch.png" diff --git a/docs/nodes/saas.md b/docs/nodes/saas.md index a112a17..3ee8adc 100644 --- a/docs/nodes/saas.md +++ b/docs/nodes/saas.md @@ -12,6 +12,7 @@ Node classes list of saas provider. ## saas.analytics +- **diagrams.saas.analytics.Snowflake** - **diagrams.saas.analytics.Stitch** ## saas.cdn diff --git a/resources/saas/analytics/snowflake.png b/resources/saas/analytics/snowflake.png new file mode 100644 index 0000000000000000000000000000000000000000..b033c494cc30817b5da220c2003160d2b1fde786 GIT binary patch literal 16205 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