This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import React, { Component } from "react"; | |
import PropTypes from "prop-types"; | |
import { Container, Row, Col } from "reactstrap"; | |
import { graphql } from "react-apollo"; | |
import { withRouter } from "react-router"; | |
import ArticleCard from "../../components/ArticleCard"; | |
import Paginator from "../../components/Paginator"; | |
import TAG_QUERY from "../../graphql/queries/TagQuery.graphql"; | |
import MORE_ARTICLES_TAG_QUERY from "../../graphql/queries/MoreArticlesTagQuery.graphql"; |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
defmodule GraphqlHelpers do | |
import Ecto.Query | |
@doc """ | |
## example | |
field :storages, list_of(:storage), do: has_many(:storages) | |
""" | |
defmacro has_many(model) do | |
quote do | |
resolve fn subject, _, _ -> |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
defmodule Users.Types do | |
use Absinthe.Schema.Notation | |
import GraphqlHelpers | |
object :user do | |
field :id, :id | |
field :first_name, :string | |
field :last_name, :string | |
field :email, :string | |
field :phone, :string |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
defmodule GraphqlHelpers do | |
import Ecto.Query | |
defmacro has_many(model, foreign_key) do | |
quote do | |
resolve fn subject, _, _ -> | |
batch({GraphqlHelpers, :process_has_many, {unquote(model), unquote(foreign_key)}}, subject.id, fn (batch_result) -> | |
{:ok, Map.get(batch_result, subject.id, %{})} | |
end) | |
end |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
defmacro belongs_to(model) do | |
[_ | module] = Module.split(unquote(model)) | |
key = Macro.underscore(module) <> "_id" |> String.to_atom | |
quote do | |
..... | |
> belongs_to(Users.User) | |
== Compilation error on file lib/storages/schemas/storage_schema.ex == | |
** (FunctionClauseError) no function clause matching in Module.split/1 |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
defmodule ApiEndpoint.Endpoint do | |
# .... | |
plug Absinthe.Plug, | |
schema: ApiEndpoint.Schema | |
end | |
defmodule ApiEndpoint.Router do | |
forward "/api/v2", Absinthe.Plug, schema: ApiEndpoint.Schema | |
end |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
defmodule ApiEndpoint.Schema.Helpers do | |
def has_many({model, foreign_key}, ids) do | |
import Ecto.Query | |
model | |
|> where([m], field(m, ^foreign_key) in ^ids) | |
|> Storages.Repo.all | |
|> Enum.group_by(fn storage -> Map.get(storage, foreign_key) end) | |
end | |
end |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# User has many storages. | |
# | |
# Give me a user, along with the storages it owns. | |
# q={user(id: 131) {name, storages{title} }} | |
defmodule Users.Types do | |
use Absinthe.Schema.Notation | |
object :user do | |
field :id, :id |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// Find all assignments & views. | |
var assignments = App.__container__.lookup('store:main').all("assignment"); | |
var views = App.__container__.lookup("component:assignment-frame")._viewRegistry; | |
$.each(views, function(i, view) { | |
// If the view is empty, or does not have a controller context, skip. | |
if (view == null || view._controller.model == null) { | |
return; | |
} | |
// Get the id controller context model. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# The idea is to add support for something like. | |
# query = from s in Subscription, | |
# order_by: s.price + s.registration_fee | |
# | |
# subscriptions = Repo.all(query) | |
# Arithmetic | |
def escape({operator, _, [left, right]} = expr, type, params, vars, env) when operator in ~w(+ - * /)a do | |
ltype = quoted_type(right, vars) | |
rtype = quoted_type(left, vars) |
NewerOlder