Security News
Supply Chain Attack Detected in Solana's web3.js Library
A supply chain attack has been detected in versions 1.95.6 and 1.95.7 of the popular @solana/web3.js library.
OneHQ GraphQL interface to Ruby Graphql.
Define a global default scope.
::HQ::GraphQL.config do |config|
config.default_scope = ->(scope, context) do
scope.where(organization_id: context[:organization_id])
end
end
Define a global excluded input fields. Useful for excluding (autogenerated | auto set) fields like below.
::HQ::GraphQL.configure do |config|
config.excluded_inputs = [:id, :created_at, :updated_at]
end
Connect to ActiveRecord to auto generate queries and mutations.
Include ::HQ::GraphQL::Resource
and set self.model_name
to start using queries.
Fields will be created for all active record columns. Association fields will be created if the association
is also a GraphQL Resource.
class AdvisorResource
include ::HQ::GraphQL::Resource
# ActiveRecord Model Name
self.model_name = "Advisor"
end
class AdvisorResource
include ::HQ::GraphQL::Resource
self.model_name = "Advisor"
# Turn off fields for active record associations
query attributes: true, associations: false do
# Create field for addresses
add_association :addresses
# add a custom field
field :custom_field, String, null: false
def custom_field
"Fizz"
end
end
end
Mutations will not be created by default. Add mutations
to a resource to build mutations for create, update, and destroy.
class AdvisorResource
include ::HQ::GraphQL::Resource
self.model_name = "Advisor"
# Builds the following mutations:
# createAdvisor
# updateAdvisor
# destroyAdvisor
mutations create: true, update: true, destroy: true
# Turn off fields for active record associations
inputs attributes: true, associations: false do
# Create input argument for addresses
add_association :addresses
end
end
Auto generate enums from the database using ActiveRecord This comes in handy when we have constants that we want represented as enums.
Let's assume we're saving data into a user types table
# select * from user_types;
id | name
--- +-------------
1 | Admin
2 | Support User
(2 rows)
class Enums::UserType < ::GraphQL::Schema::Enum
with_model
end
This class automatically uses the UserType ActiveRecord model to generate an enum:
enum UserType {
Admin
SupportUser
}
Add mutations to your schema
class RootMutation < ::HQ::GraphQL::RootMutation; end
class Schema < ::GraphQL::Schema
mutation(RootMutation)
end
Create a root query:
class AdvisorResource
include ::HQ::GraphQL::Resource
self.model_name = "Advisor"
root_query
end
class RootQuery < ::HQ::GraphQL::RootQuery; end
class Schema < ::GraphQL::Schema
mutation(RootQuery)
end
class AdvisorResource
include ::HQ::GraphQL::Resource
self.model_name = "Advisor"
def_root :advisors, is_array: true, null: false do
argument :active, ::GraphQL::Types::Boolean, required: false
def resolve(active: nil)
scope = Advisor.all
if active
scope = scope.where(active: true)
end
end
end
end
class AdvisorType < ::GraphQL::Schema::Object
# Supports graphql-ruby functionality
field :id, Int, null: false
# Lazy Loading
# Useful for loading data from the database to generate a schema
lazy_load do
load_data_from_db.each do |name|
field name, String, null: false
end
end
# Attach the GraphQL object to an ActiveRecord Model
# First argument is the string form of your ActiveRecord model.
#
# attributes:
# Set it to false if you don't want to auto-include your model's attributes.
# Defaults to true.
#
# associations:
# Set it to false if you don't want to auto-include your model's associations.
# Defaults to true.
with_model "Advisor", attributes: true, associations: false
# Remove attributes that were included by `with_model`
remove_attrs :id, :created_at, :updated_at
# Remove associations that were included by `with_model`
remove_associations :organization, :created_by
end
FAQs
Unknown package
We found that hq-graphql demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Security News
A supply chain attack has been detected in versions 1.95.6 and 1.95.7 of the popular @solana/web3.js library.
Research
Security News
A malicious npm package targets Solana developers, rerouting funds in 2% of transactions to a hardcoded address.
Security News
Research
Socket researchers have discovered malicious npm packages targeting crypto developers, stealing credentials and wallet data using spyware delivered through typosquats of popular cryptographic libraries.