- Add support for conditions in upsert
- Add support for returning structs in Repo.all
Backwards-compatible changes:
Dlex.mutate(pid, query, mutation, opts)is nowDlex.mutate(pid, %{query: query}, mutation, opts), additionallyDlex.mutate(pid, %{query: query, condition: condition}, mutation, opts)Repo.alldefined viaDlex.Repo- could return structs(if type is defined) instead of pure jsons
- Rename dgraph.type to be without prefix
type.as it do not needed anymore
- Add http support for DGraph
1.1.0
As dgraph has breaking API change, this version supports DGraph only in version 1.1.0, use
dlex in version 0.2.1 for using with DGraph 1.0.X.
- support DGraph
1.1.0(only forgrpcat the moment)
- add support for upcoming
upsertfunctionallity (only forgrpc) - fix dependency missconfiguration in
v0.2.0
- fix leaking of gun connections on timeouts
- add
transportoption, which specifies ifgrpcorhttptransport should be used - make
grpcdependencies optional, so you can choose based on transport the dependencies
- add support to alter table in the same format (json) as it queried. Now you can use output of
Dlex.query_schemainDlex.alter.
Example of usage:
Dlex.alter(conn, [%{
"index" => true,
"predicate" => "user.name",
"tokenizer" => ["term"],
"type" => "string"
}])
- add initial basic language integrated features on top of dgraph adapter:
- add
Dlex.Nodeto define schemas - add
Dlex.Repoto define something likeEcto.Repo, but specific for Dgraph with custom API Dlex.ReposupportsEcto.Changeset(andDlex.Nodeschemas supportsEcto.Changeset), ecto is optional
- add
Example usage:
defmodule User do
use Dlex.Node
schema "user" do
field :name, :string, index: ["term"]
field :age, :integer
field :owns, :uid
end
end
defmodule Repo do
use Dlex.Repo, otp_app: :test, modules: [User]
end
%User{uid: uid} = Repo.mutate!(%User{name: "Alice", age: 29})
%User{name: "Alice"} = Repo.get!(uid)
Casting of nodes to structs happens automatically, but you need to either specify module in
modules or register them once after Repo is started with Repo.register(User) to be
available for Repo.
To get User schema, can be User.__schema__(:alter) used or Repo.snapshot for all fields or
or Repo.alter_schema() to directly migrate/alter schema for Repo.
Ecto.Changeset works with Dlex.Node and Dlex.Repo.
Example usage:
changeset = Ecto.Changeset.cast(%User{}, %{"name" => "Alice", "age" => 20}, [:name, :age])
Repo.mutate(changeset)
- add timeout on grpc calls
- ensure client reconnection works on dgraph unavailibility
- optimize json encoding/decoding, fetch json library from environment on connection start
- fix adding default options by including as supervisor
First release!