site_blog 0.6.0 → 0.8.0
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.
- checksums.yaml +4 -4
- data/config/routes.rb +0 -4
- data/lib/site_blog/engine.rb +0 -2
- data/lib/site_blog/version.rb +1 -1
- metadata +1 -44
- data/app/controllers/site_blog/graphql_controller.rb +0 -52
- data/app/graphql/site_blog/mutations/base_mutation.rb +0 -10
- data/app/graphql/site_blog/schema.rb +0 -28
- data/app/graphql/site_blog/types/article_type.rb +0 -12
- data/app/graphql/site_blog/types/base_argument.rb +0 -6
- data/app/graphql/site_blog/types/base_enum.rb +0 -6
- data/app/graphql/site_blog/types/base_field.rb +0 -7
- data/app/graphql/site_blog/types/base_input_object.rb +0 -7
- data/app/graphql/site_blog/types/base_interface.rb +0 -9
- data/app/graphql/site_blog/types/base_object.rb +0 -7
- data/app/graphql/site_blog/types/base_scalar.rb +0 -6
- data/app/graphql/site_blog/types/base_union.rb +0 -6
- data/app/graphql/site_blog/types/mutation_type.rb +0 -11
- data/app/graphql/site_blog/types/query_type.rb +0 -38
- data/app/graphql/site_blog/types/tag_type.rb +0 -9
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: a1c17bed2d9dfb9c42207ed00b2958f8d412f011a4cd0789253d0f7fd84fdb9a
|
4
|
+
data.tar.gz: 32877ba756d06b0a139a43d1f4f6e806e54430bc7131109a434bf3b0e0897371
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 155d5b8e30636d78c1dafe191d72f11dc9bb0bc4d96fc8d3d54318d20553201bbd12d72acb244ad4e9b6caf888be9408a36ff9c7614f0167c3973b331e24e4c5
|
7
|
+
data.tar.gz: fc947d550f5cd921f66571189072041915af772deebe5a4aee74947dc6822f8408c4f09272697481d4b2a20f232f0eb177fb3a577e3ccc565bd4df0c83689dc1
|
data/config/routes.rb
CHANGED
data/lib/site_blog/engine.rb
CHANGED
data/lib/site_blog/version.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: site_blog
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.8.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Eldar
|
@@ -80,34 +80,6 @@ dependencies:
|
|
80
80
|
- - ">="
|
81
81
|
- !ruby/object:Gem::Version
|
82
82
|
version: '0'
|
83
|
-
- !ruby/object:Gem::Dependency
|
84
|
-
name: graphql
|
85
|
-
requirement: !ruby/object:Gem::Requirement
|
86
|
-
requirements:
|
87
|
-
- - ">="
|
88
|
-
- !ruby/object:Gem::Version
|
89
|
-
version: '0'
|
90
|
-
type: :runtime
|
91
|
-
prerelease: false
|
92
|
-
version_requirements: !ruby/object:Gem::Requirement
|
93
|
-
requirements:
|
94
|
-
- - ">="
|
95
|
-
- !ruby/object:Gem::Version
|
96
|
-
version: '0'
|
97
|
-
- !ruby/object:Gem::Dependency
|
98
|
-
name: graphiql-rails
|
99
|
-
requirement: !ruby/object:Gem::Requirement
|
100
|
-
requirements:
|
101
|
-
- - ">="
|
102
|
-
- !ruby/object:Gem::Version
|
103
|
-
version: '0'
|
104
|
-
type: :runtime
|
105
|
-
prerelease: false
|
106
|
-
version_requirements: !ruby/object:Gem::Requirement
|
107
|
-
requirements:
|
108
|
-
- - ">="
|
109
|
-
- !ruby/object:Gem::Version
|
110
|
-
version: '0'
|
111
83
|
- !ruby/object:Gem::Dependency
|
112
84
|
name: activeadmin_addons
|
113
85
|
requirement: !ruby/object:Gem::Requirement
|
@@ -136,22 +108,7 @@ files:
|
|
136
108
|
- app/assets/stylesheets/site_blog/application.css
|
137
109
|
- app/controllers/site_blog/application_controller.rb
|
138
110
|
- app/controllers/site_blog/articles_controller.rb
|
139
|
-
- app/controllers/site_blog/graphql_controller.rb
|
140
111
|
- app/controllers/site_blog/tags_controller.rb
|
141
|
-
- app/graphql/site_blog/mutations/base_mutation.rb
|
142
|
-
- app/graphql/site_blog/schema.rb
|
143
|
-
- app/graphql/site_blog/types/article_type.rb
|
144
|
-
- app/graphql/site_blog/types/base_argument.rb
|
145
|
-
- app/graphql/site_blog/types/base_enum.rb
|
146
|
-
- app/graphql/site_blog/types/base_field.rb
|
147
|
-
- app/graphql/site_blog/types/base_input_object.rb
|
148
|
-
- app/graphql/site_blog/types/base_interface.rb
|
149
|
-
- app/graphql/site_blog/types/base_object.rb
|
150
|
-
- app/graphql/site_blog/types/base_scalar.rb
|
151
|
-
- app/graphql/site_blog/types/base_union.rb
|
152
|
-
- app/graphql/site_blog/types/mutation_type.rb
|
153
|
-
- app/graphql/site_blog/types/query_type.rb
|
154
|
-
- app/graphql/site_blog/types/tag_type.rb
|
155
112
|
- app/helpers/site_blog/application_helper.rb
|
156
113
|
- app/helpers/site_blog/articles_helper.rb
|
157
114
|
- app/helpers/site_blog/tags_helper.rb
|
@@ -1,52 +0,0 @@
|
|
1
|
-
module SiteBlog
|
2
|
-
class GraphqlController < ApplicationController
|
3
|
-
# If accessing from outside this domain, nullify the session
|
4
|
-
# This allows for outside API access while preventing CSRF attacks,
|
5
|
-
# but you'll have to authenticate your user separately
|
6
|
-
# protect_from_forgery with: :null_session
|
7
|
-
|
8
|
-
def execute
|
9
|
-
variables = prepare_variables(params[:variables])
|
10
|
-
query = params[:query]
|
11
|
-
operation_name = params[:operationName]
|
12
|
-
context = {
|
13
|
-
# Query context goes here, for example:
|
14
|
-
# current_user: current_user,
|
15
|
-
}
|
16
|
-
result = Schema.execute(query, variables: variables, context: context, operation_name: operation_name)
|
17
|
-
render json: result
|
18
|
-
rescue StandardError => e
|
19
|
-
raise e unless Rails.env.development?
|
20
|
-
handle_error_in_development(e)
|
21
|
-
end
|
22
|
-
|
23
|
-
private
|
24
|
-
|
25
|
-
# Handle variables in form data, JSON body, or a blank value
|
26
|
-
def prepare_variables(variables_param)
|
27
|
-
case variables_param
|
28
|
-
when String
|
29
|
-
if variables_param.present?
|
30
|
-
JSON.parse(variables_param) || {}
|
31
|
-
else
|
32
|
-
{}
|
33
|
-
end
|
34
|
-
when Hash
|
35
|
-
variables_param
|
36
|
-
when ActionController::Parameters
|
37
|
-
variables_param.to_unsafe_hash # GraphQL-Ruby will validate name and type of incoming variables.
|
38
|
-
when nil
|
39
|
-
{}
|
40
|
-
else
|
41
|
-
raise ArgumentError, "Unexpected parameter: #{variables_param}"
|
42
|
-
end
|
43
|
-
end
|
44
|
-
|
45
|
-
def handle_error_in_development(e)
|
46
|
-
logger.error e.message
|
47
|
-
logger.error e.backtrace.join("\n")
|
48
|
-
|
49
|
-
render json: { errors: [{ message: e.message, backtrace: e.backtrace }], data: {} }, status: 500
|
50
|
-
end
|
51
|
-
end
|
52
|
-
end
|
@@ -1,28 +0,0 @@
|
|
1
|
-
module SiteBlog
|
2
|
-
class Schema < GraphQL::Schema
|
3
|
-
mutation(Types::MutationType)
|
4
|
-
query(Types::QueryType)
|
5
|
-
|
6
|
-
# For batch-loading (see https://graphql-ruby.org/dataloader/overview.html)
|
7
|
-
use GraphQL::Dataloader
|
8
|
-
|
9
|
-
# GraphQL-Ruby calls this when something goes wrong while running a query:
|
10
|
-
def self.type_error(err, context)
|
11
|
-
# if err.is_a?(GraphQL::InvalidNullError)
|
12
|
-
# # report to your bug tracker here
|
13
|
-
# return nil
|
14
|
-
# end
|
15
|
-
super
|
16
|
-
end
|
17
|
-
|
18
|
-
# Union and Interface Resolution
|
19
|
-
def self.resolve_type(abstract_type, obj, ctx)
|
20
|
-
# TODO: Implement this method
|
21
|
-
# to return the correct GraphQL object type for `obj`
|
22
|
-
raise(GraphQL::RequiredImplementationMissingError)
|
23
|
-
end
|
24
|
-
|
25
|
-
# Stop validating when it encounters this many errors:
|
26
|
-
validate_max_errors(100)
|
27
|
-
end
|
28
|
-
end
|
@@ -1,12 +0,0 @@
|
|
1
|
-
module SiteBlog
|
2
|
-
module Types
|
3
|
-
class ArticleType < Types::BaseObject
|
4
|
-
description "A blog article"
|
5
|
-
field :id, ID, null: false
|
6
|
-
field :title, String, null: false
|
7
|
-
field :html_description, String, null: false
|
8
|
-
field :tag, TagType, null: false, description: "This post's tag"
|
9
|
-
field :created_at, GraphQL::Types::ISO8601DateTime, null: false
|
10
|
-
end
|
11
|
-
end
|
12
|
-
end
|
@@ -1,38 +0,0 @@
|
|
1
|
-
module SiteBlog
|
2
|
-
module Types
|
3
|
-
class QueryType < Types::BaseObject
|
4
|
-
|
5
|
-
field :articles, [ArticleType], null: false, description: "Вывод всех постов" do
|
6
|
-
argument :page, Int, required: false, description: 'Номер страницы'
|
7
|
-
argument :tag_id, Int, required: false, description: 'ID тега'
|
8
|
-
argument :query, String, required: false, description: 'Поисковый запрос'
|
9
|
-
end
|
10
|
-
|
11
|
-
def articles(page: 1, tag_id: nil, query: nil)
|
12
|
-
Article.preload(:tag).filters({page: page, tag_id: tag_id, query: query})
|
13
|
-
end
|
14
|
-
|
15
|
-
field :article, ArticleType, "Поиск поста по ID" do
|
16
|
-
argument :id, ID
|
17
|
-
end
|
18
|
-
|
19
|
-
def article(id:)
|
20
|
-
Article.find(id)
|
21
|
-
end
|
22
|
-
|
23
|
-
field :tags, [TagType], null: false, description: "Вывод всех тегов"
|
24
|
-
def tags
|
25
|
-
Tag.all
|
26
|
-
end
|
27
|
-
|
28
|
-
field :tag, TagType, "Поиск тега по ID" do
|
29
|
-
argument :id, ID
|
30
|
-
end
|
31
|
-
|
32
|
-
def tag(id:)
|
33
|
-
Tag.find(id)
|
34
|
-
end
|
35
|
-
|
36
|
-
end
|
37
|
-
end
|
38
|
-
end
|