Packages
ash_scylla
1.9.0
1.10.0
1.9.0
1.8.0
1.7.2
1.7.1
1.7.0
1.6.2
1.6.1
1.6.0
1.5.3
1.5.2
1.5.1
1.5.0
1.4.1
1.4.0
retired
1.3.0
1.2.0
1.1.2
1.1.1
1.1.0
1.0.7
1.0.6
1.0.5
1.0.4
1.0.3
1.0.2
1.0.1
1.0.0
0.13.1
0.13.0
0.12.1
0.12.0
0.11.1
0.11.0
0.10.3
0.10.2
0.10.1
0.10.0
0.9.0
0.8.0
0.7.0
0.6.0
0.5.0
0.4.0
0.3.0
0.2.0
0.1.1
0.1.0
An Ash Framework data layer for ScyllaDB/Apache Cassandra using Xandra
Current section
Files
Jump to
Current section
Files
ash_scylla
mix.exs
mix.exs
defmodule AshScylla.MixProject do
use Mix.Project
def project do
[
app: :ash_scylla,
version: "1.9.0",
elixir: "~> 1.18",
start_permanent: Mix.env() == :prod,
deps: deps(),
aliases: aliases(),
test_paths: ["test"],
test_load_filters: [&String.ends_with?(&1, "_test.exs")],
test_ignore_filters: [&String.starts_with?(&1, "test/support/")],
dialyzer: [
plt_add_apps: [:ex_unit, :mix],
flags: [:unmatched_returns, :error_handling, :underspecs]
],
name: "AshScylla",
source_url: "https://github.com/ohhi-vn/ash_scylla",
homepage_url: "https://ohhi.vn",
docs: docs(),
package: package(),
elixirc_paths: elixirc_paths(Mix.env()),
test_coverage: [
tool: Mix.Tasks.Test.Coverage,
output: "cover",
summary: [threshold: 85],
ignore_modules: [
AshScylla.MixHelpers,
~r"^AshScylla\.Mix\.Tasks\.",
AshScylla.NewTemplate,
AshScylla.ResourceGenerator,
AshScylla.MigrationGenerator,
AshScylla.MigrationGenerator.Operation
]
],
consolidate_protocols: Mix.env() != :test,
test_elixirc_options: [debug_info: true]
]
end
# Specifies which paths to compile per environment.
defp elixirc_paths(:test), do: ["lib", "test/support"]
defp elixirc_paths(_), do: ["lib"]
# Run "mix help compile.app" to learn about applications.
def application do
[
extra_applications: [:logger],
mod: {AshScylla.Application, []}
]
end
defp package do
[
description: "An Ash Framework data layer for ScyllaDB/Apache Cassandra using Xandra",
licenses: ["Apache-2.0"],
links: %{
"GitHub" => "https://github.com/ohhi-vn/ash_scylla",
"Documentation" => "https://hexdocs.pm/ash_scylla",
"ScyllaDB" => "https://www.scylladb.com/",
"Ash Framework" => "https://ash-hq.org/"
},
files: ~w(lib .formatter.exs mix.exs README* LICENSE*)
]
end
defp docs do
[
main: "AshScylla",
logo: "assets/logo.svg",
extras: [
"README.md",
"guides/USAGE_GUIDE.md",
"guides/DEV_GUIDE.md",
"guides/PRODUCTION_GUIDE.md",
"guides/IMPLEMENTATION_SUMMARY.md",
"guides/ERROR_HANDLING.md"
],
groups_for_modules: [
Core: [
AshScylla,
AshScylla.DataLayer,
AshScylla.Query
],
"Schema Helpers": [
AshScylla.Migration
],
"Data Layer Modules": [
AshScylla.DataLayer.Dsl,
AshScylla.DataLayer.QueryBuilder,
AshScylla.DataLayer.Batch,
AshScylla.DataLayer.FilterValidator,
AshScylla.DataLayer.MaterializedView,
AshScylla.DataLayer.SecondaryIndex,
AshScylla.DataLayer.Pagination,
AshScylla.DataLayer.Udt,
AshScylla.DataLayer.Collection,
AshScylla.DataLayer.SchemaMigration,
AshScylla.DataLayer.Compression,
AshScylla.DataLayer.QueryOptimizer
],
"Repo Helpers": [
AshScylla.Repo,
AshScylla.Release,
AshScylla.Extension
],
Performance: [
AshScylla.PreparedStatementCache
],
Observability: [
AshScylla.Telemetry
],
"Error Handling": [
AshScylla.Error,
AshScylla.Error.ScyllaError
],
"Full-Text Search": [
AshScylla.Search,
AshScylla.Search.Storage,
AshScylla.Search.Analyzer,
AshScylla.Search.Analyzer.Tokenizer,
AshScylla.Search.Analyzer.Normalizer,
AshScylla.Search.Analyzer.StopWords,
AshScylla.Search.Analyzer.Stemmer,
AshScylla.Search.Indexer,
AshScylla.Search.Indexer.Builder,
AshScylla.Search.Indexer.Updater,
AshScylla.Search.Indexer.Deleter,
AshScylla.Search.Query.Parser,
AshScylla.Search.Query.Planner,
AshScylla.Search.Query.BooleanEngine,
AshScylla.Search.Query.Ranking,
AshScylla.Search.Query.Paginator
]
]
]
end
# Run "mix help deps" to learn about dependencies.
defp deps do
[
{:ash, "~> 3.30"},
{:xandra, "~> 0.19"},
# Dev/test-only pins with override to keep dependency resolution stable
# for credo/dialyzer tooling without affecting the published package.
{:decimal, "~> 3.1", override: true, only: [:dev, :test]},
# Dev/test-only pin with override to keep dependency resolution stable
# for credo/dialyzer tooling without affecting the published package.
{:hackney, "~> 4.3", override: true, only: [:dev, :test]},
{:testcontainer_ex, "~> 0.9", only: [:test], runtime: false},
{:benchee, "~> 1.5", only: [:dev, :test]},
{:benchee_html, "~> 1.0", only: [:dev, :test]},
{:ex_doc, "~> 0.40", only: :dev, runtime: false},
# Code quality
{:dialyxir, "~> 1.4", only: [:dev, :test], runtime: false},
{:credo, "~> 1.7", only: [:dev, :test], runtime: false},
{:ex_dna, "~> 1.5", only: [:dev, :test], runtime: false}
]
end
defp aliases do
[
"test.ci": ["credo --strict", "test --exclude integration"],
test: ["test --exclude integration"],
"test.unit": ["test --exclude integration"],
"test.integration": ["test --only integration"],
"test.integration.direct": [
"run --eval \"System.put_env(\\\"SCYLLA_DIRECT\\\", \\\"1\\\")\"",
"test --only integration"
],
"test.integration.apple_container": [
"run --eval \"System.put_env(\\\"CONTAINER_ENGINE\\\", \\\"apple_container\\\")\"",
"test --only integration"
],
# Testing & Coverage
coveralls: ["test --cover", "coveralls.html"],
# Code Quality
quality: ["format --check-formatted", "credo --strict", "dialyzer"]
]
end
end