summaryrefslogtreecommitdiff
path: root/gnu/packages/elixir-databases.scm
diff options
context:
space:
mode:
Diffstat (limited to 'gnu/packages/elixir-databases.scm')
-rw-r--r--gnu/packages/elixir-databases.scm353
1 files changed, 353 insertions, 0 deletions
diff --git a/gnu/packages/elixir-databases.scm b/gnu/packages/elixir-databases.scm
new file mode 100644
index 0000000000..883073a790
--- /dev/null
+++ b/gnu/packages/elixir-databases.scm
@@ -0,0 +1,353 @@
+;;; GNU Guix --- Functional package management for GNU
+;;; Copyright © 2025 Giacomo Leidi <goodoldpaul@autistici.org>
+;;;
+;;; This file is part of GNU Guix.
+;;;
+;;; GNU Guix is free software; you can redistribute it and/or modify it
+;;; under the terms of the GNU General Public License as published by
+;;; the Free Software Foundation; either version 3 of the License, or (at
+;;; your option) any later version.
+;;;
+;;; GNU Guix is distributed in the hope that it will be useful, but
+;;; WITHOUT ANY WARRANTY; without even the implied warranty of
+;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+;;; GNU General Public License for more details.
+;;;
+;;; You should have received a copy of the GNU General Public License
+;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
+
+(define-module (gnu packages elixir-databases)
+ #:use-module (gnu packages erlang-xyz)
+ #:use-module (gnu packages elixir-xyz)
+ #:use-module (guix build-system mix)
+ #:use-module (guix download)
+ #:use-module (guix git-download)
+ #:use-module (guix gexp)
+ #:use-module ((guix licenses)
+ #:prefix license:)
+ #:use-module (guix packages))
+
+(define-public elixir-db-connection
+ (package
+ (name "elixir-db-connection")
+ (version "2.8.1")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (hexpm-uri "db_connection" version))
+ (sha256
+ (base32 "1zd8kp85wh7bbzr5x4kc75l53r5q9xwrhfz04vrpd793kd43s6m6"))))
+ (build-system mix-build-system)
+ (arguments
+ (list
+ ;; Tests require a db process
+ #:tests? #f
+ #:build-per-environment #f))
+ (propagated-inputs (list erlang-telemetry))
+ (synopsis
+ "Database connection behaviour")
+ (description
+ "This package provides @code{elixir-db-connection}, a library implementing
+database connection behaviour and database connection pool. It is designed for
+handling transaction, prepare/execute, cursors and client process
+describe/encode/decode.")
+ (home-page "https://hexdocs.pm/db_connection/")
+ (license license:asl2.0)))
+
+(define-public elixir-ecto-dev-logger
+ (package
+ (name "elixir-ecto-dev-logger")
+ (version "0.15.0")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (hexpm-uri "ecto_dev_logger" version))
+ (sha256
+ (base32 "12p82z8m6n2ibzbghhfv7cckncv2jb05360ki3rgr94rspbhgj5j"))))
+ (build-system mix-build-system)
+ (native-inputs (list elixir-ecto-sql elixir-geo-postgis))
+ (propagated-inputs (list elixir-ecto elixir-geo elixir-jason))
+ (synopsis "Alternative Ecto logger for development")
+ (description "This package provides an alternative Ecto logger for
+development.")
+ (home-page "https://hexdocs.pm/ecto_dev_logger/")
+ (license license:asl2.0)))
+
+(define-public elixir-ecto-sql
+ (package
+ (name "elixir-ecto-sql")
+ (version "3.13.2")
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/elixir-ecto/ecto_sql.git")
+ (commit (string-append "v" version))))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32 "1i5jhjv8xqwl887kq7jp880ywpp16glllcfd7y7kpb6h6jc62hnd"))))
+ (build-system mix-build-system)
+ (propagated-inputs
+ (list elixir-db-connection
+ elixir-ecto
+ elixir-myxql
+ elixir-postgrex
+ elixir-tds))
+ (synopsis "SQL-based adapters for Ecto and database migrations")
+ (description "@code{Ecto SQL} provides building blocks for writing SQL
+adapters for Ecto. It features:
+
+@itemize
+@item The @code{Ecto.Adapters.SQL} module as an entry point for all SQL-based
+adapters
+@item Default implementations for Postgres (@code{Ecto.Adapters.Postgres}),
+MySQL (@code{Ecto.Adapters.MyXQL}), and MSSQL (@code{Ecto.Adapters.Tds})
+@item A test sandbox (@code{Ecto.Adapters.SQL.Sandbox}) that concurrently runs
+database tests inside transactions
+@item Support for database migrations via Mix tasks
+@end itemize")
+ (home-page "https://hexdocs.pm/ecto_sql/")
+ (license license:asl2.0)))
+
+(define-public elixir-ecto
+ (package
+ (name "elixir-ecto")
+ (version "3.13.2")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (hexpm-uri "ecto" version))
+ (sha256
+ (base32 "0ghb9a4mgiak6103vks6w013sa7kg8dhirxpwxbgy4q56y8r57b6"))))
+ (build-system mix-build-system)
+ (propagated-inputs (list elixir-decimal elixir-jason erlang-telemetry))
+ (synopsis
+ "Toolkit for data mapping and language integrated query for Elixir")
+ (description
+ "This package provides a toolkit for data mapping and language integrated query
+for Elixir.")
+ (home-page "https://hexdocs.pm/ecto/")
+ (license license:asl2.0)))
+
+(define-public elixir-ex-machina
+ (package
+ (name "elixir-ex-machina")
+ (version "2.8.0")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (hexpm-uri "ex_machina" version))
+ (sha256
+ (base32 "0abpg9i08w0iglc0qcl5b3g91jw22s3mvyn4nvxc3hf0cjf1mzkr"))))
+ (build-system mix-build-system)
+ (native-inputs (list elixir-excoveralls))
+ (propagated-inputs (list elixir-ecto elixir-ecto-sql))
+ (synopsis
+ "Factory library")
+ (description
+ "This package provides a factory library by the creators of @code{FactoryBot}
+(@code{FactoryGirl}).")
+ (home-page "https://hexdocs.pm/ex_machina/")
+ (license license:expat)))
+
+(define-public elixir-exto
+ (package
+ (name "elixir-exto")
+ (version "0.4.0")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (hexpm-uri "exto" version))
+ (sha256
+ (base32 "1mkzxj37dqb966fhqg528wrlfx9ifgxis87np4fqc30rqabgsyj4"))))
+ (build-system mix-build-system)
+ (propagated-inputs (list elixir-accessible elixir-ecto))
+ (native-inputs
+ (list elixir-decimal))
+ (synopsis "Extend ecto schema definitions in config")
+ (description "@code{Exto} is an Elixir library providing
+configuration-driven @code{Ecto} schema extensibility.")
+ (home-page "https://hexdocs.pm/exto/")
+ (license license:asl2.0)))
+
+(define-public elixir-geo-postgis
+ (package
+ (name "elixir-geo-postgis")
+ (version "3.7.1")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (hexpm-uri "geo_postgis" version))
+ (sha256
+ (base32 "102j81g58wb8skdpa5vggp2kcwdva8qf0nyxkpzbfd8dc0y843f2"))))
+ (build-system mix-build-system)
+ (propagated-inputs (list elixir-ecto elixir-geo elixir-jason elixir-poison
+ elixir-postgrex))
+ (synopsis "PostGIS extension for Postgrex.")
+ (description "@code{PostGIS} extension for Postgrex.")
+ (home-page "https://hexdocs.pm/geo_postgis/")
+ (license license:expat)))
+
+(define-public elixir-myxql
+ (package
+ (name "elixir-myxql")
+ (version "0.8.0")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (hexpm-uri "myxql" version))
+ (sha256
+ (base32 "0x6p8hn2lx7lplim4w10l1vq2d7rwkqg972ias3hzkdkdyrcxh0y"))))
+ (build-system mix-build-system)
+ (native-inputs
+ (list erlang-binpp))
+ (propagated-inputs (list elixir-db-connection elixir-decimal elixir-geo elixir-jason
+ elixir-table))
+ (synopsis "MySQL 5.5+ driver for Elixir")
+ (description "This library provides a @code{MySQL} 5.5+ driver for Elixir.")
+ (home-page "https://hexdocs.pm/myxql/")
+ (license license:asl2.0)))
+
+(define-public elixir-needle-ulid
+ (package
+ (name "elixir-needle-ulid")
+ (version "0.3.0")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (hexpm-uri "needle_ulid" version))
+ (sha256
+ (base32 "14ryrgsabj08v1a0wyad21aizyy8kcr0n1l1z6ks6fvv4v2hskfm"))))
+ (build-system mix-build-system)
+ (propagated-inputs (list elixir-ecto elixir-ecto-sql elixir-ex-ulid))
+ (synopsis
+ "Provides an ULID datatype for @code{Ecto} and related helpers")
+ (description
+ "This package provides @code{elixir-needle-ulid}, a library implementing an
+ULID datatype for @code{Ecto} (using @code{ex_ulid}) and related helpers.")
+ (home-page "https://hexdocs.pm/needle_ulid/")
+ (license license:expat)))
+
+(define-public elixir-needle
+ (package
+ (name "elixir-needle")
+ (version "0.8.0")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (hexpm-uri "needle" version))
+ (sha256
+ (base32 "0gf1bniwf650xrczvimmw1drg6cjqz21539nlhqw4la4m91jl7h4"))))
+ (build-system mix-build-system)
+ (propagated-inputs (list elixir-ecto-sql elixir-exto elixir-needle-ulid
+ erlang-telemetry))
+ (synopsis
+ "Universal foreign keys, virtual schemas, and shared data mixins")
+ (description
+ "When using a relational DB (such an @code{Ecto} schema with a Postgres
+table), usually a foreign key field has to be pre-defined with a reference
+pointing to a specific field in a specific table.
+
+Besides regular schemas with universal foreign keys (@code{Pointable}),
+@code{Needle} provides @code{Virtual} for schemas that don’t have any fields on
+their own, and @code{Mixin} for storing common fields that can be re-used by
+multiple @code{Pointable}s or @code{Virtual}s.")
+ (home-page "https://hexdocs.pm/needle/")
+ (license license:asl2.0)))
+
+(define-public elixir-postgrex
+ (package
+ (name "elixir-postgrex")
+ (version "0.19.1")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (hexpm-uri "postgrex" version))
+ (sha256
+ (base32 "1y58v3jsya98462r43mv29wwgf3vv8dz9jn63q4iwf4gl62pib4b"))))
+ (build-system mix-build-system)
+ (propagated-inputs (list elixir-db-connection elixir-decimal elixir-jason
+ elixir-table))
+ (synopsis "PostgreSQL driver for Elixir")
+ (description "This library provides a @code{PostgreSQL} driver for Elixir.")
+ (home-page "https://hexdocs.pm/postgrex/")
+ (license license:asl2.0)))
+
+(define-public elixir-table
+ (package
+ (name "elixir-table")
+ (version "0.1.2")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (hexpm-uri "table" version))
+ (sha256
+ (base32 "0aah0rkq6ikl1w359n65rmhk0p0npwj0fr35grf321pqzrzbr6by"))))
+ (build-system mix-build-system)
+ (synopsis "Unified access to tabular data")
+ (description "This package provides @code{elixir-table}, a library that
+implements unified access to tabular data.")
+ (home-page "https://hexdocs.pm/table/")
+ (license license:asl2.0)))
+
+(define-public elixir-tds
+ (package
+ (name "elixir-tds")
+ (version "2.3.5")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (hexpm-uri "tds" version))
+ (sha256
+ (base32 "1wk20rk1fjh16swlkiyl3fs91lj4w4dk77l5z77vp12mvpsm1qsj"))))
+ (build-system mix-build-system)
+ (propagated-inputs
+ (list elixir-db-connection elixir-decimal elixir-jason
+ elixir-table))
+ (synopsis
+ "Elixir implementation of the MS TDS protocol")
+ (description
+ "This package implements a Microsoft SQL Server client. More generally it
+provides an Elixir implementation of the MS TDS protocol.")
+ (home-page "https://hexdocs.pm/tds/")
+ (license license:asl2.0)))
+
+(define-public elixir-uniq
+ (package
+ (name "elixir-uniq")
+ (version "0.6.1")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (hexpm-uri "uniq" version))
+ (sha256
+ (base32 "05mrzx7g8q5c4jg38pxqcw1x3bysw0i5n4j7d42v6m3hcx6w69k4"))))
+ (build-system mix-build-system)
+ (native-inputs (list elixir-stream-data))
+ (propagated-inputs (list elixir-ecto))
+ (synopsis
+ "Provides UUID generation, parsing, and formatting")
+ (description
+ "This package provides UUID generation, parsing, and formatting. Supports RFC
+4122, and the v6 draft extension.")
+ (home-page "https://hexdocs.pm/uniq/")
+ (license license:asl2.0)))
+
+(define-public elixir-uuidv7
+ (package
+ (name "elixir-uuidv7")
+ (version "1.0.0")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (hexpm-uri "uuidv7" version))
+ (sha256
+ (base32 "1g2c8imkk7pgcvc5ns2v1b0zils3ai1yym4s3a5psvs511qk7k8f"))))
+ (build-system mix-build-system)
+ (propagated-inputs (list elixir-ecto))
+ (synopsis "UUID v7 implementation and @code{Ecto.Type} for Elixir")
+ (description
+ "This package provides a UUID v7 implementation and @code{Ecto.Type}
+for Elixir.")
+ (home-page "https://hexdocs.pm/uuidv7/")
+ (license license:expat)))