puzzly_api_plugin 0.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (62) hide show
  1. checksums.yaml +7 -0
  2. data/.circleci/config.yml +43 -0
  3. data/.gitignore +16 -0
  4. data/.rspec +3 -0
  5. data/.rubocop.yml +11 -0
  6. data/Gemfile +8 -0
  7. data/LICENSE.txt +21 -0
  8. data/Linux Mint Ruby Setup.md +1 -0
  9. data/README.md +17 -0
  10. data/Rakefile +8 -0
  11. data/bin/console +15 -0
  12. data/bin/setup +8 -0
  13. data/lib/puzzly_api_plugin/collection/apis.rb +20 -0
  14. data/lib/puzzly_api_plugin/collection/caches.rb +20 -0
  15. data/lib/puzzly_api_plugin/collection/collection.rb +24 -0
  16. data/lib/puzzly_api_plugin/collection/contexts.rb +12 -0
  17. data/lib/puzzly_api_plugin/collection/modules.rb +16 -0
  18. data/lib/puzzly_api_plugin/collection/queries.rb +20 -0
  19. data/lib/puzzly_api_plugin/collection/schemas.rb +16 -0
  20. data/lib/puzzly_api_plugin/collection/tables.rb +20 -0
  21. data/lib/puzzly_api_plugin/collection/topics.rb +24 -0
  22. data/lib/puzzly_api_plugin/fields.rb +82 -0
  23. data/lib/puzzly_api_plugin/generator.rb +62 -0
  24. data/lib/puzzly_api_plugin/identity.rb +15 -0
  25. data/lib/puzzly_api_plugin/jsonable.rb +15 -0
  26. data/lib/puzzly_api_plugin/metadata/api.rb +33 -0
  27. data/lib/puzzly_api_plugin/metadata/cache.rb +33 -0
  28. data/lib/puzzly_api_plugin/metadata/context.rb +21 -0
  29. data/lib/puzzly_api_plugin/metadata/metadata.rb +27 -0
  30. data/lib/puzzly_api_plugin/metadata/module.rb +27 -0
  31. data/lib/puzzly_api_plugin/metadata/query.rb +33 -0
  32. data/lib/puzzly_api_plugin/metadata/schema.rb +33 -0
  33. data/lib/puzzly_api_plugin/metadata/table.rb +33 -0
  34. data/lib/puzzly_api_plugin/metadata/topic.rb +33 -0
  35. data/lib/puzzly_api_plugin/page.rb +19 -0
  36. data/lib/puzzly_api_plugin/version.rb +5 -0
  37. data/lib/puzzly_api_plugin/view/api.rb +19 -0
  38. data/lib/puzzly_api_plugin/view/apis.rb +23 -0
  39. data/lib/puzzly_api_plugin/view/cache.rb +19 -0
  40. data/lib/puzzly_api_plugin/view/caches.rb +23 -0
  41. data/lib/puzzly_api_plugin/view/context.rb +36 -0
  42. data/lib/puzzly_api_plugin/view/contexts.rb +23 -0
  43. data/lib/puzzly_api_plugin/view/dashboard.rb +32 -0
  44. data/lib/puzzly_api_plugin/view/module.rb +34 -0
  45. data/lib/puzzly_api_plugin/view/modules.rb +23 -0
  46. data/lib/puzzly_api_plugin/view/queries.rb +23 -0
  47. data/lib/puzzly_api_plugin/view/query.rb +19 -0
  48. data/lib/puzzly_api_plugin/view/renderable.rb +57 -0
  49. data/lib/puzzly_api_plugin/view/schema.rb +23 -0
  50. data/lib/puzzly_api_plugin/view/schemas.rb +23 -0
  51. data/lib/puzzly_api_plugin/view/table.rb +19 -0
  52. data/lib/puzzly_api_plugin/view/tables.rb +23 -0
  53. data/lib/puzzly_api_plugin/view/topic.rb +23 -0
  54. data/lib/puzzly_api_plugin/view/topics.rb +23 -0
  55. data/lib/puzzly_api_plugin.rb +55 -0
  56. data/puzzly_api_plugin.gemspec +36 -0
  57. data/script/bootstrap +3 -0
  58. data/script/ci-build +7 -0
  59. data/script/ci-release +15 -0
  60. data/script/fmt +10 -0
  61. data/script/test +4 -0
  62. metadata +201 -0
@@ -0,0 +1,33 @@
1
+ # frozen_string_literal: true
2
+
3
+ module PuzzlyApiPlugin
4
+ class Query < Metadata
5
+ def self.create(document)
6
+ Query.new(document,
7
+ document.data[YAMLFields::MODULE_ID],
8
+ document.data[YAMLFields::QUERY_ID],
9
+ document.data[YAMLFields::QUERY_NAME],
10
+ document.data[YAMLFields::QUERY_DESCRIPTION],
11
+ document.data[YAMLFields::QUERY_SPECIFICATION])
12
+ end
13
+
14
+ def initialize(document, module_id, id, name, description, specification)
15
+ super(document, id, name)
16
+ self[MetadataFields::MODULE_ID] = module_id
17
+ self[MetadataFields::DESCRIPTION] = description
18
+ self[MetadataFields::SPECIFICATION] = specification
19
+ end
20
+
21
+ def module_id
22
+ self[MetadataFields::MODULE_ID]
23
+ end
24
+
25
+ def description
26
+ self[MetadataFields::DESCRIPTION]
27
+ end
28
+
29
+ def specification
30
+ self[MetadataFields::SPECIFICATION]
31
+ end
32
+ end
33
+ end
@@ -0,0 +1,33 @@
1
+ # frozen_string_literal: true
2
+
3
+ module PuzzlyApiPlugin
4
+ class Schema < Metadata
5
+ def self.create(document)
6
+ Schema.new(document,
7
+ document.data[YAMLFields::CONTEXT_ID],
8
+ document.data[YAMLFields::SCHEMA_ID],
9
+ document.data[YAMLFields::SCHEMA_NAME],
10
+ document.data[YAMLFields::SCHEMA_DESCRIPTION],
11
+ document.data[YAMLFields::SCHEMA_SPECIFICATION])
12
+ end
13
+
14
+ def initialize(document, context_id, id, name, description, specification)
15
+ super(document, id, name)
16
+ self[MetadataFields::CONTEXT_ID] = context_id
17
+ self[MetadataFields::DESCRIPTION] = description
18
+ self[MetadataFields::SPECIFICATION] = specification
19
+ end
20
+
21
+ def context_id
22
+ self[MetadataFields::CONTEXT_ID]
23
+ end
24
+
25
+ def description
26
+ self[MetadataFields::DESCRIPTION]
27
+ end
28
+
29
+ def specification
30
+ self[MetadataFields::SPECIFICATION]
31
+ end
32
+ end
33
+ end
@@ -0,0 +1,33 @@
1
+ # frozen_string_literal: true
2
+
3
+ module PuzzlyApiPlugin
4
+ class Table < Metadata
5
+ def self.create(document)
6
+ Table.new(document,
7
+ document.data[YAMLFields::MODULE_ID],
8
+ document.data[YAMLFields::TABLE_ID],
9
+ document.data[YAMLFields::TABLE_NAME],
10
+ document.data[YAMLFields::TABLE_DESCRIPTION],
11
+ document.data[YAMLFields::TABLE_SPECIFICATION])
12
+ end
13
+
14
+ def initialize(document, module_id, id, name, description, specification)
15
+ super(document, id, name)
16
+ self[MetadataFields::MODULE_ID] = module_id
17
+ self[MetadataFields::DESCRIPTION] = description
18
+ self[MetadataFields::SPECIFICATION] = specification
19
+ end
20
+
21
+ def module_id
22
+ self[MetadataFields::MODULE_ID]
23
+ end
24
+
25
+ def description
26
+ self[MetadataFields::DESCRIPTION]
27
+ end
28
+
29
+ def specification
30
+ self[MetadataFields::SPECIFICATION]
31
+ end
32
+ end
33
+ end
@@ -0,0 +1,33 @@
1
+ # frozen_string_literal: true
2
+
3
+ module PuzzlyApiPlugin
4
+ class Topic < Metadata
5
+ def self.create(document)
6
+ Topic.new(document,
7
+ document.data[YAMLFields::MODULE_ID],
8
+ document.data[YAMLFields::SCHEMA_ID],
9
+ document.data[YAMLFields::TOPIC_ID],
10
+ document.data[YAMLFields::TOPIC_NAME],
11
+ document.data[YAMLFields::TOPIC_DESCRIPTION])
12
+ end
13
+
14
+ def initialize(document, module_id, schema_id, id, name, description)
15
+ super(document, id, name)
16
+ self[MetadataFields::MODULE_ID] = module_id
17
+ self[MetadataFields::SCHEMA_ID] = schema_id
18
+ self[MetadataFields::DESCRIPTION] = description
19
+ end
20
+
21
+ def module_id
22
+ self[MetadataFields::MODULE_ID]
23
+ end
24
+
25
+ def schema_id
26
+ self[MetadataFields::SCHEMA_ID]
27
+ end
28
+
29
+ def description
30
+ self[MetadataFields::DESCRIPTION]
31
+ end
32
+ end
33
+ end
@@ -0,0 +1,19 @@
1
+ # frozen_string_literal: true
2
+
3
+ class JSONPage < Jekyll::Page
4
+ def initialize(site, base, dir, name, content)
5
+ @site = site
6
+ @base = base
7
+ @dir = dir
8
+ @name = name
9
+
10
+ self.data = {}
11
+ self.content = content
12
+
13
+ process(@name)
14
+ end
15
+
16
+ def render_with_liquid?
17
+ false
18
+ end
19
+ end
@@ -0,0 +1,5 @@
1
+ # frozen_string_literal: true
2
+
3
+ module PuzzlyApiPlugin
4
+ VERSION = '0.0.2'
5
+ end
@@ -0,0 +1,19 @@
1
+ # frozen_string_literal: true
2
+
3
+ module PuzzlyApiPlugin
4
+ class ApiView < Renderable
5
+ def self.create(api)
6
+ mod = ModulesCollection.instance.get_by_id api.module_id
7
+
8
+ ApiView.new(mod.to_identity,
9
+ api)
10
+ end
11
+
12
+ def initialize(mod, api)
13
+ api.copy_to_hash self
14
+ self.delete MetadataFields::MODULE_ID
15
+
16
+ self[MetadataFields::MODULE] = mod
17
+ end
18
+ end
19
+ end
@@ -0,0 +1,23 @@
1
+ # frozen_string_literal: true
2
+
3
+ module PuzzlyApiPlugin
4
+
5
+ class ApisView < Renderable
6
+ API_ENDPOINT = 'apis/home'
7
+
8
+ def self.create
9
+ apis = []
10
+
11
+ ApisCollection.instance.each do |id, api|
12
+ apis.push ApiView.create(api)
13
+ end
14
+
15
+ ApisView.new(apis)
16
+ end
17
+
18
+ def initialize(apis)
19
+ super(API_ENDPOINT)
20
+ self.apis apis
21
+ end
22
+ end
23
+ end
@@ -0,0 +1,19 @@
1
+ # frozen_string_literal: true
2
+
3
+ module PuzzlyApiPlugin
4
+ class CacheView < Renderable
5
+ def self.create(cache)
6
+ mod = ModulesCollection.instance.get_by_id cache.module_id
7
+
8
+ CacheView.new(mod.to_identity,
9
+ cache)
10
+ end
11
+
12
+ def initialize(mod, cache)
13
+ cache.copy_to_hash self
14
+ self.delete MetadataFields::MODULE_ID
15
+
16
+ self[MetadataFields::MODULE] = mod
17
+ end
18
+ end
19
+ end
@@ -0,0 +1,23 @@
1
+ # frozen_string_literal: true
2
+
3
+ module PuzzlyApiPlugin
4
+
5
+ class CachesView < Renderable
6
+ API_ENDPOINT = 'caches/home'
7
+
8
+ def self.create
9
+ caches = []
10
+
11
+ CachesCollection.instance.each do |id, cache|
12
+ caches.push CacheView.create(cache)
13
+ end
14
+
15
+ CachesView.new(caches)
16
+ end
17
+
18
+ def initialize(caches)
19
+ super(API_ENDPOINT)
20
+ self.caches caches
21
+ end
22
+ end
23
+ end
@@ -0,0 +1,36 @@
1
+ # frozen_string_literal: true
2
+
3
+ module PuzzlyApiPlugin
4
+ class ContextView < Renderable
5
+ def self.create(context)
6
+ modules = ModulesCollection.instance.get_by_context context
7
+ schemas = SchemasCollection.instance.get_by_context context
8
+
9
+ apis = ApisCollection.instance.get_by_modules modules
10
+ caches = CachesCollection.instance.get_by_modules modules
11
+ queries = QueriesCollection.instance.get_by_modules modules
12
+ tables = TablesCollection.instance.get_by_modules modules
13
+ topics = TopicsCollection.instance.get_by_modules modules
14
+
15
+ ContextView.new(context,
16
+ modules.map { |_id, mod| mod.to_identity },
17
+ schemas.map { |_id, schema| schema.to_identity },
18
+ apis.map { |_id, api| api.to_identity },
19
+ caches.map { |_id, cache| cache.to_identity },
20
+ queries.map { |_id, query| query.to_identity },
21
+ tables.map { |_id, table| table.to_identity },
22
+ topics.map { |_id, topic| topic.to_identity })
23
+ end
24
+
25
+ def initialize(context, modules, schemas, apis, caches, queries, tables, topics)
26
+ context.copy_to_hash self
27
+ self.modules modules
28
+ self.schemas schemas
29
+ self.apis apis
30
+ self.caches caches
31
+ self.queries queries
32
+ self.tables tables
33
+ self.topics topics
34
+ end
35
+ end
36
+ end
@@ -0,0 +1,23 @@
1
+ # frozen_string_literal: true
2
+
3
+ module PuzzlyApiPlugin
4
+
5
+ class ContextsView < Renderable
6
+ API_ENDPOINT = 'contexts/home'
7
+
8
+ def self.create
9
+ contexts = []
10
+
11
+ ContextsCollection.instance.each do |id, context|
12
+ contexts.push ContextView.create(context)
13
+ end
14
+
15
+ ContextsView.new(contexts)
16
+ end
17
+
18
+ def initialize(contexts)
19
+ super(API_ENDPOINT)
20
+ self.contexts contexts
21
+ end
22
+ end
23
+ end
@@ -0,0 +1,32 @@
1
+ # frozen_string_literal: true
2
+
3
+ module PuzzlyApiPlugin
4
+ class HomeDashboardView < Renderable
5
+ API_ENDPOINT = 'dashboards/home'
6
+
7
+ def self.create
8
+ HomeDashboardView.new(ApisCollection.instance.identities,
9
+ CachesCollection.instance.identities,
10
+ ContextsCollection.instance.identities,
11
+ ModulesCollection.instance.identities,
12
+ QueriesCollection.instance.identities,
13
+ SchemasCollection.instance.identities,
14
+ TablesCollection.instance.identities,
15
+ TopicsCollection.instance.identities)
16
+ end
17
+
18
+ private
19
+
20
+ def initialize(apis, caches, contexts, modules, queries, schemas, tables, topics)
21
+ super(API_ENDPOINT)
22
+ self.apis apis
23
+ self.caches caches
24
+ self.contexts contexts
25
+ self.modules modules
26
+ self.queries queries
27
+ self.schemas schemas
28
+ self.tables tables
29
+ self.topics topics
30
+ end
31
+ end
32
+ end
@@ -0,0 +1,34 @@
1
+ # frozen_string_literal: true
2
+
3
+ module PuzzlyApiPlugin
4
+ class ModuleView < Renderable
5
+ def self.create(mod)
6
+ context = ContextsCollection.instance.get_by_id mod.context_id
7
+ apis = ApisCollection.instance.get_by_module mod
8
+ caches = CachesCollection.instance.get_by_module mod
9
+ queries = QueriesCollection.instance.get_by_module mod
10
+ tables = TablesCollection.instance.get_by_module mod
11
+ topics = TopicsCollection.instance.get_by_module mod
12
+
13
+ ModuleView.new(context.to_identity,
14
+ mod,
15
+ apis.map { |_id, api| api.to_identity },
16
+ caches.map { |_id, cache| cache.to_identity },
17
+ queries.map { |_id, query| query.to_identity },
18
+ tables.map { |_id, table| table.to_identity },
19
+ topics.map { |_id, topic| topic.to_identity })
20
+ end
21
+
22
+ def initialize(context, mod, apis, caches, queries, tables, topics)
23
+ mod.copy_to_hash self
24
+ self.delete MetadataFields::CONTEXT_ID
25
+
26
+ self[MetadataFields::CONTEXT] = context
27
+ self.apis apis
28
+ self.caches caches
29
+ self.queries queries
30
+ self.tables tables
31
+ self.topics topics
32
+ end
33
+ end
34
+ end
@@ -0,0 +1,23 @@
1
+ # frozen_string_literal: true
2
+
3
+ module PuzzlyApiPlugin
4
+
5
+ class ModulesView < Renderable
6
+ API_ENDPOINT = 'modules/home'
7
+
8
+ def self.create
9
+ modules = []
10
+
11
+ ModulesCollection.instance.each do |id, mod|
12
+ modules.push ModuleView.create(mod)
13
+ end
14
+
15
+ ModulesView.new(modules)
16
+ end
17
+
18
+ def initialize(modules)
19
+ super(API_ENDPOINT)
20
+ self.modules modules
21
+ end
22
+ end
23
+ end
@@ -0,0 +1,23 @@
1
+ # frozen_string_literal: true
2
+
3
+ module PuzzlyApiPlugin
4
+
5
+ class QueriesView < Renderable
6
+ API_ENDPOINT = 'queries/home'
7
+
8
+ def self.create
9
+ queries = []
10
+
11
+ QueriesCollection.instance.each do |id, query|
12
+ queries.push QueryView.create(query)
13
+ end
14
+
15
+ QueriesView.new(queries)
16
+ end
17
+
18
+ def initialize(queries)
19
+ super(API_ENDPOINT)
20
+ self.queries queries
21
+ end
22
+ end
23
+ end
@@ -0,0 +1,19 @@
1
+ # frozen_string_literal: true
2
+
3
+ module PuzzlyApiPlugin
4
+ class QueryView < Renderable
5
+ def self.create(query)
6
+ mod = ModulesCollection.instance.get_by_id query.module_id
7
+
8
+ QueryView.new(mod.to_identity,
9
+ query)
10
+ end
11
+
12
+ def initialize(mod, query)
13
+ query.copy_to_hash self
14
+ self.delete MetadataFields::MODULE_ID
15
+
16
+ self[MetadataFields::MODULE] = mod
17
+ end
18
+ end
19
+ end
@@ -0,0 +1,57 @@
1
+ # frozen_string_literal: true
2
+
3
+ module PuzzlyApiPlugin
4
+ class Renderable < JSONable
5
+ def initialize(path)
6
+ self['path'] = path
7
+ end
8
+
9
+ def render
10
+ to_json
11
+ end
12
+
13
+ def path
14
+ self[MetadataFields::PATH]
15
+ end
16
+
17
+ def contexts contexts
18
+ self[MetadataFields::CONTEXTS] = contexts
19
+ self[MetadataFields::NUMBER_OF_CONTEXTS] = contexts.size
20
+ end
21
+
22
+ def modules modules
23
+ self[MetadataFields::MODULES] = modules
24
+ self[MetadataFields::NUMBER_OF_MODULES] = modules.size
25
+ end
26
+
27
+ def schemas schemas
28
+ self[MetadataFields::SCHEMAS] = schemas
29
+ self[MetadataFields::NUMBER_OF_SCHEMAS] = schemas.size
30
+ end
31
+
32
+ def apis apis
33
+ self[MetadataFields::APIS] = apis
34
+ self[MetadataFields::NUMBER_OF_APIS] = apis.size
35
+ end
36
+
37
+ def caches caches
38
+ self[MetadataFields::CACHES] = caches
39
+ self[MetadataFields::NUMBER_OF_CACHES] = caches.size
40
+ end
41
+
42
+ def queries queries
43
+ self[MetadataFields::QUERIES] = queries
44
+ self[MetadataFields::NUMBER_OF_QUERIES] = queries.size
45
+ end
46
+
47
+ def tables tables
48
+ self[MetadataFields::TABLES] = tables
49
+ self[MetadataFields::NUMBER_OF_TABLES] = tables.size
50
+ end
51
+
52
+ def topics topics
53
+ self[MetadataFields::TOPICS] = topics
54
+ self[MetadataFields::NUMBER_OF_TOPICS] = topics.size
55
+ end
56
+ end
57
+ end
@@ -0,0 +1,23 @@
1
+ # frozen_string_literal: true
2
+
3
+ module PuzzlyApiPlugin
4
+ class SchemaView < Renderable
5
+ def self.create(schema)
6
+ context = ContextsCollection.instance.get_by_id schema.context_id
7
+
8
+ topics = TopicsCollection.instance.get_by_schema schema
9
+
10
+ SchemaView.new( context.to_identity,
11
+ schema,
12
+ topics)
13
+ end
14
+
15
+ def initialize(context, schema, topics)
16
+ schema.copy_to_hash self
17
+ self.delete MetadataFields::CONTEXT_ID
18
+
19
+ self[MetadataFields::CONTEXT] = context
20
+ self.topics topics
21
+ end
22
+ end
23
+ end
@@ -0,0 +1,23 @@
1
+ # frozen_string_literal: true
2
+
3
+ module PuzzlyApiPlugin
4
+
5
+ class SchemasView < Renderable
6
+ API_ENDPOINT = 'schemas/home'
7
+
8
+ def self.create
9
+ schemas = []
10
+
11
+ SchemasCollection.instance.each do |id, mod|
12
+ schemas.push SchemaView.create(mod)
13
+ end
14
+
15
+ SchemasView.new(schemas)
16
+ end
17
+
18
+ def initialize(schemas)
19
+ super(API_ENDPOINT)
20
+ self.schemas schemas
21
+ end
22
+ end
23
+ end
@@ -0,0 +1,19 @@
1
+ # frozen_string_literal: true
2
+
3
+ module PuzzlyApiPlugin
4
+ class TableView < Renderable
5
+ def self.create(table)
6
+ mod = ModulesCollection.instance.get_by_id table.module_id
7
+
8
+ TableView.new(mod.to_identity,
9
+ table)
10
+ end
11
+
12
+ def initialize(mod, table)
13
+ table.copy_to_hash self
14
+ self.delete MetadataFields::MODULE_ID
15
+
16
+ self[MetadataFields::MODULE] = mod
17
+ end
18
+ end
19
+ end
@@ -0,0 +1,23 @@
1
+ # frozen_string_literal: true
2
+
3
+ module PuzzlyApiPlugin
4
+
5
+ class TablesView < Renderable
6
+ API_ENDPOINT = 'tables/home'
7
+
8
+ def self.create
9
+ tables = []
10
+
11
+ TablesCollection.instance.each do |id, table|
12
+ tables.push TableView.create(table)
13
+ end
14
+
15
+ TablesView.new(tables)
16
+ end
17
+
18
+ def initialize(tables)
19
+ super(API_ENDPOINT)
20
+ self.tables tables
21
+ end
22
+ end
23
+ end
@@ -0,0 +1,23 @@
1
+ # frozen_string_literal: true
2
+
3
+ module PuzzlyApiPlugin
4
+ class TopicView < Renderable
5
+ def self.create(topic)
6
+ mod = ModulesCollection.instance.get_by_id topic.module_id
7
+ schema = SchemasCollection.instance.get_by_id topic.schema_id
8
+
9
+ TopicView.new(mod.to_identity,
10
+ schema.to_identity,
11
+ topic)
12
+ end
13
+
14
+ def initialize(mod, schema, topic)
15
+ topic.copy_to_hash self
16
+ self.delete MetadataFields::MODULE_ID
17
+ self.delete MetadataFields::SCHEMA_ID
18
+
19
+ self[MetadataFields::MODULE] = mod
20
+ self[MetadataFields::SCHEMA] = schema
21
+ end
22
+ end
23
+ end
@@ -0,0 +1,23 @@
1
+ # frozen_string_literal: true
2
+
3
+ module PuzzlyApiPlugin
4
+
5
+ class TopicsView < Renderable
6
+ API_ENDPOINT = 'topics/home'
7
+
8
+ def self.create
9
+ topics = []
10
+
11
+ TopicsCollection.instance.each do |id, topic|
12
+ topics.push TopicView.create(topic)
13
+ end
14
+
15
+ TopicsView.new(topics)
16
+ end
17
+
18
+ def initialize(topics)
19
+ super(API_ENDPOINT)
20
+ self.topics topics
21
+ end
22
+ end
23
+ end