Popularity
6.7
Growing
Activity
0.0
Stable
80
9
13

Monthly Downloads: 168
Programming language: Elixir
License: Apache License 2.0

ecto_cassandra alternatives and similar packages

Based on the "ORM and Datamapping" category

Do you think we are missing an alternative of ecto_cassandra or a related project?

Add another 'ORM and Datamapping' Package

README

EctoCassandra

Build Status Hex.pm Hex.pm Coverage Status

Cassandra Adapter for Ecto (the language integrated query for Elixir)

Example

# In your config/config.exs file
config :my_app, ecto_repos: [Sample.Repo]

config :my_app, Sample.Repo,
  adapter: EctoCassandra.Adapter,
  keyspace: "ecto_simple",
  contact_points: ["localhost"],
  replication: [
    class: "SimpleStrategy",
    replication_factor: 1,
  ]

# In your application code
defmodule Sample.Repo.Migrations.CreateUser do
  use Ecto.Migration

  def change do
    create table(:users, primary_key: false) do
      add :id, :id, partition_key: true
      add :age, :integer, clustering_column: true
      add :name, :string
      add :email, :string
      add :password_hash, :string

      timestamps()
    end
  end
end

defmodule Sample.Repo do
  use Ecto.Repo, otp_app: :my_app
end

defmodule Sample.User do
  use Ecto.Schema

  @primary_key false
  schema "users" do
    field :username, primary_key: true
    field :age, :integer
    field :name # Defaults to type :string
    field :email
    field :password_hash
    field :password, :string, virtual: true
  end
end

defmodule Sample.App do
  import Ecto.Query
  alias Sample.{Repo, User}

  def keyword_query do
    Repo.all from u in User,
      where: u.username == "john",
      select: u.email
  end

  def pipe_query do
    User
    |> where([u], u.age > 10)
    |> order_by(:age)
    |> limit(10)
    |> Repo.all
  end

  def get_by_name do
    Repo.get_by(username: "john")
  end
end


*Note that all licence references and agreements mentioned in the ecto_cassandra README section above are relevant to that project's source code only.