| 1 | |
| 2 | |
| 3 | |
| 4 | |
| 5 | |
| 6 | |
| 7 | |
| 8 | |
| 9 | |
| 10 | |
| 11 | |
| 12 | |
| 13 | |
| 14 | |
| 15 | |
| 16 | |
| 17 | |
| 18 |
|
| 19 | (define-module (gnu packages elixir-databases)
|
| 20 | #:use-module (gnu packages erlang-xyz)
|
| 21 | #:use-module (gnu packages elixir-xyz)
|
| 22 | #:use-module (guix build-system mix)
|
| 23 | #:use-module (guix download)
|
| 24 | #:use-module (guix git-download)
|
| 25 | #:use-module (guix gexp)
|
| 26 | #:use-module ((guix licenses)
|
| 27 | #:prefix license:)
|
| 28 | #:use-module (guix packages))
|
| 29 |
|
| 30 | (define-public elixir-db-connection
|
| 31 | (package
|
| 32 | (name "elixir-db-connection")
|
| 33 | (version "2.10.2")
|
| 34 | (source
|
| 35 | (origin
|
| 36 | (method url-fetch)
|
| 37 | (uri (hexpm-uri "db_connection" version))
|
| 38 | (sha256
|
| 39 | (base32 "14zsy0nhzb12vx3mc5lvab8ka52gipyhxym2j1jazw9h4d4182si"))))
|
| 40 | (build-system mix-build-system)
|
| 41 | (arguments
|
| 42 | (list
|
| 43 | |
| 44 | #:tests? #f
|
| 45 | #:build-per-environment #f))
|
| 46 | (propagated-inputs (list erlang-telemetry))
|
| 47 | (synopsis
|
| 48 | "Database connection behaviour")
|
| 49 | (description
|
| 50 | "This package provides @code{elixir-db-connection}, a library implementing
|
| 51 | database connection behaviour and database connection pool. It is designed for
|
| 52 | handling transaction, prepare/execute, cursors and client process
|
| 53 | describe/encode/decode.")
|
| 54 | (home-page "https://hexdocs.pm/db_connection/")
|
| 55 | (license license:asl2.0)))
|
| 56 |
|
| 57 | (define-public elixir-ecto-dev-logger
|
| 58 | (package
|
| 59 | (name "elixir-ecto-dev-logger")
|
| 60 | (version "0.15.0")
|
| 61 | (source
|
| 62 | (origin
|
| 63 | (method url-fetch)
|
| 64 | (uri (hexpm-uri "ecto_dev_logger" version))
|
| 65 | (sha256
|
| 66 | (base32 "12p82z8m6n2ibzbghhfv7cckncv2jb05360ki3rgr94rspbhgj5j"))))
|
| 67 | (build-system mix-build-system)
|
| 68 | (native-inputs (list elixir-ecto-sql elixir-geo-postgis))
|
| 69 | (propagated-inputs (list elixir-ecto elixir-geo elixir-jason))
|
| 70 | (synopsis "Alternative Ecto logger for development")
|
| 71 | (description "This package provides an alternative Ecto logger for
|
| 72 | development.")
|
| 73 | (home-page "https://hexdocs.pm/ecto_dev_logger/")
|
| 74 | (license license:asl2.0)))
|
| 75 |
|
| 76 | (define-public elixir-ecto-sql
|
| 77 | (package
|
| 78 | (name "elixir-ecto-sql")
|
| 79 | (version "3.14.0")
|
| 80 | (source
|
| 81 | (origin
|
| 82 | (method git-fetch)
|
| 83 | (uri (git-reference
|
| 84 | (url "https://github.com/elixir-ecto/ecto_sql.git")
|
| 85 | (commit (string-append "v" version))))
|
| 86 | (file-name (git-file-name name version))
|
| 87 | (sha256
|
| 88 | (base32 "1p91kkc4sr7pyrjfv26w1afh0svz2mr1fq0vw9rcnpdfsxzzrs04"))))
|
| 89 | (build-system mix-build-system)
|
| 90 | (propagated-inputs
|
| 91 | (list elixir-db-connection
|
| 92 | elixir-ecto
|
| 93 | elixir-myxql
|
| 94 | elixir-postgrex
|
| 95 | elixir-tds))
|
| 96 | (synopsis "SQL-based adapters for Ecto and database migrations")
|
| 97 | (description "@code{Ecto SQL} provides building blocks for writing SQL
|
| 98 | adapters for Ecto. It features:
|
| 99 |
|
| 100 | @itemize
|
| 101 | @item The @code{Ecto.Adapters.SQL} module as an entry point for all SQL-based
|
| 102 | adapters
|
| 103 | @item Default implementations for Postgres (@code{Ecto.Adapters.Postgres}),
|
| 104 | MySQL (@code{Ecto.Adapters.MyXQL}), and MSSQL (@code{Ecto.Adapters.Tds})
|
| 105 | @item A test sandbox (@code{Ecto.Adapters.SQL.Sandbox}) that concurrently runs
|
| 106 | database tests inside transactions
|
| 107 | @item Support for database migrations via Mix tasks
|
| 108 | @end itemize")
|
| 109 | (home-page "https://hexdocs.pm/ecto_sql/")
|
| 110 | (license license:asl2.0)))
|
| 111 |
|
| 112 | (define-public elixir-ecto
|
| 113 | (package
|
| 114 | (name "elixir-ecto")
|
| 115 | (version "3.14.1")
|
| 116 | (source
|
| 117 | (origin
|
| 118 | (method url-fetch)
|
| 119 | (uri (hexpm-uri "ecto" version))
|
| 120 | (sha256
|
| 121 | (base32 "0c0an9ky13km8f7vky6xvpwkx2hk0g9z6ghagm30yw4ncyar3f94"))))
|
| 122 | (build-system mix-build-system)
|
| 123 | (propagated-inputs (list elixir-decimal elixir-jason erlang-telemetry))
|
| 124 | (synopsis
|
| 125 | "Toolkit for data mapping and language integrated query for Elixir")
|
| 126 | (description
|
| 127 | "This package provides a toolkit for data mapping and language integrated query
|
| 128 | for Elixir.")
|
| 129 | (home-page "https://hexdocs.pm/ecto/")
|
| 130 | (license license:asl2.0)))
|
| 131 |
|
| 132 | (define-public elixir-ex-machina
|
| 133 | (package
|
| 134 | (name "elixir-ex-machina")
|
| 135 | (version "2.8.1")
|
| 136 | (source
|
| 137 | (origin
|
| 138 | (method url-fetch)
|
| 139 | (uri (hexpm-uri "ex_machina" version))
|
| 140 | (sha256
|
| 141 | (base32 "1y4c2bjpqzvl433wvy29mrzkb061sfxs33szb5x50r973jmqlnzj"))))
|
| 142 | (build-system mix-build-system)
|
| 143 | (native-inputs (list elixir-excoveralls))
|
| 144 | (propagated-inputs (list elixir-ecto elixir-ecto-sql))
|
| 145 | (synopsis
|
| 146 | "Factory library")
|
| 147 | (description
|
| 148 | "This package provides a factory library by the creators of @code{FactoryBot}
|
| 149 | (@code{FactoryGirl}).")
|
| 150 | (home-page "https://hexdocs.pm/ex_machina/")
|
| 151 | (license license:expat)))
|
| 152 |
|
| 153 | (define-public elixir-exto
|
| 154 | (package
|
| 155 | (name "elixir-exto")
|
| 156 | (version "0.4.0")
|
| 157 | (source
|
| 158 | (origin
|
| 159 | (method url-fetch)
|
| 160 | (uri (hexpm-uri "exto" version))
|
| 161 | (sha256
|
| 162 | (base32 "1mkzxj37dqb966fhqg528wrlfx9ifgxis87np4fqc30rqabgsyj4"))))
|
| 163 | (build-system mix-build-system)
|
| 164 | (propagated-inputs (list elixir-accessible elixir-ecto))
|
| 165 | (native-inputs
|
| 166 | (list elixir-decimal))
|
| 167 | (synopsis "Extend ecto schema definitions in config")
|
| 168 | (description "@code{Exto} is an Elixir library providing
|
| 169 | configuration-driven @code{Ecto} schema extensibility.")
|
| 170 | (home-page "https://hexdocs.pm/exto/")
|
| 171 | (license license:asl2.0)))
|
| 172 |
|
| 173 | (define-public elixir-geo-postgis
|
| 174 | (package
|
| 175 | (name "elixir-geo-postgis")
|
| 176 | (version "3.7.1")
|
| 177 | (source
|
| 178 | (origin
|
| 179 | (method url-fetch)
|
| 180 | (uri (hexpm-uri "geo_postgis" version))
|
| 181 | (sha256
|
| 182 | (base32 "102j81g58wb8skdpa5vggp2kcwdva8qf0nyxkpzbfd8dc0y843f2"))))
|
| 183 | (build-system mix-build-system)
|
| 184 | (propagated-inputs (list elixir-ecto elixir-geo elixir-jason elixir-poison
|
| 185 | elixir-postgrex))
|
| 186 | (synopsis "PostGIS extension for Postgrex.")
|
| 187 | (description "@code{PostGIS} extension for Postgrex.")
|
| 188 | (home-page "https://hexdocs.pm/geo_postgis/")
|
| 189 | (license license:expat)))
|
| 190 |
|
| 191 | (define-public elixir-myxql
|
| 192 | (package
|
| 193 | (name "elixir-myxql")
|
| 194 | (version "0.9.0")
|
| 195 | (source
|
| 196 | (origin
|
| 197 | (method url-fetch)
|
| 198 | (uri (hexpm-uri "myxql" version))
|
| 199 | (sha256
|
| 200 | (base32 "0jqlbnzcr79aln90bsynd41pnsy0jvypa22pj719bad7ca2v65rs"))))
|
| 201 | (build-system mix-build-system)
|
| 202 | (native-inputs
|
| 203 | (list erlang-binpp))
|
| 204 | (propagated-inputs (list elixir-db-connection elixir-decimal elixir-geo elixir-jason
|
| 205 | elixir-table))
|
| 206 | (synopsis "MySQL 5.5+ driver for Elixir")
|
| 207 | (description "This library provides a @code{MySQL} 5.5+ driver for Elixir.")
|
| 208 | (home-page "https://hexdocs.pm/myxql/")
|
| 209 | (license license:asl2.0)))
|
| 210 |
|
| 211 | (define-public elixir-needle-ulid
|
| 212 | (package
|
| 213 | (name "elixir-needle-ulid")
|
| 214 | (version "0.5.0")
|
| 215 | (source
|
| 216 | (origin
|
| 217 | (method url-fetch)
|
| 218 | (uri (hexpm-uri "needle_ulid" version))
|
| 219 | (sha256
|
| 220 | (base32 "0i6scz8ikym7qxb201hb5pxhaqja5ma6g5k5i7j52yzzb2k68sqr"))))
|
| 221 | (build-system mix-build-system)
|
| 222 | (propagated-inputs (list elixir-ecto elixir-ecto-sql elixir-ex-ulid))
|
| 223 | (synopsis
|
| 224 | "Provides an ULID datatype for @code{Ecto} and related helpers")
|
| 225 | (description
|
| 226 | "This package provides @code{elixir-needle-ulid}, a library implementing an
|
| 227 | ULID datatype for @code{Ecto} (using @code{ex_ulid}) and related helpers.")
|
| 228 | (home-page "https://hexdocs.pm/needle_ulid/")
|
| 229 | (license license:expat)))
|
| 230 |
|
| 231 | (define-public elixir-needle-uid
|
| 232 | (package
|
| 233 | (name "elixir-needle-uid")
|
| 234 | (version "0.0.2")
|
| 235 | (source
|
| 236 | (origin
|
| 237 | (method url-fetch)
|
| 238 | (uri (hexpm-uri "needle_uid" version))
|
| 239 | (sha256
|
| 240 | (base32 "040vqqjprzdsr5n8swbbh67g2s7gb5p1mwjjm1mf3x6xs4niidcf"))))
|
| 241 | (build-system mix-build-system)
|
| 242 | (propagated-inputs
|
| 243 | (list elixir-ecto elixir-needle-ulid elixir-untangle))
|
| 244 | (synopsis "Hybrid prefixed UUIDv7 and ULID data type for Ecto")
|
| 245 | (description "This package provides @code{elixir-needle-uid}, a library
|
| 246 | implementing an hybrid prefixed UUIDv7 and ULID data type for @code{Ecto}.")
|
| 247 | (home-page "https://hexdocs.pm/needle_uid/")
|
| 248 | (license license:expat)))
|
| 249 |
|
| 250 | (define-public elixir-needle
|
| 251 | (package
|
| 252 | (name "elixir-needle")
|
| 253 | (version "0.9.0")
|
| 254 | (source
|
| 255 | (origin
|
| 256 | (method url-fetch)
|
| 257 | (uri (hexpm-uri "needle" version))
|
| 258 | (sha256
|
| 259 | (base32 "05x5f3q6f1v0qcczzzh9rw65yxg4fnmkvv5nk08pq87p1whg59hr"))))
|
| 260 | (build-system mix-build-system)
|
| 261 | (propagated-inputs (list elixir-ecto-sql elixir-exto elixir-needle-uid
|
| 262 | erlang-telemetry elixir-typed-ecto-schema))
|
| 263 | (synopsis
|
| 264 | "Universal foreign keys, virtual schemas, and shared data mixins")
|
| 265 | (description
|
| 266 | "When using a relational DB (such an @code{Ecto} schema with a Postgres
|
| 267 | table), usually a foreign key field has to be pre-defined with a reference
|
| 268 | pointing to a specific field in a specific table.
|
| 269 |
|
| 270 | Besides regular schemas with universal foreign keys (@code{Pointable}),
|
| 271 | @code{Needle} provides @code{Virtual} for schemas that don’t have any fields on
|
| 272 | their own, and @code{Mixin} for storing common fields that can be re-used by
|
| 273 | multiple @code{Pointable}s or @code{Virtual}s.")
|
| 274 | (home-page "https://hexdocs.pm/needle/")
|
| 275 | (license license:asl2.0)))
|
| 276 |
|
| 277 | (define-public elixir-postgrex
|
| 278 | (package
|
| 279 | (name "elixir-postgrex")
|
| 280 | (version "0.19.1")
|
| 281 | (source
|
| 282 | (origin
|
| 283 | (method url-fetch)
|
| 284 | (uri (hexpm-uri "postgrex" version))
|
| 285 | (sha256
|
| 286 | (base32 "1y58v3jsya98462r43mv29wwgf3vv8dz9jn63q4iwf4gl62pib4b"))))
|
| 287 | (build-system mix-build-system)
|
| 288 | (propagated-inputs (list elixir-db-connection elixir-decimal elixir-jason
|
| 289 | elixir-table))
|
| 290 | (synopsis "PostgreSQL driver for Elixir")
|
| 291 | (description "This library provides a @code{PostgreSQL} driver for Elixir.")
|
| 292 | (home-page "https://hexdocs.pm/postgrex/")
|
| 293 | (license license:asl2.0)))
|
| 294 |
|
| 295 | (define-public elixir-table
|
| 296 | (package
|
| 297 | (name "elixir-table")
|
| 298 | (version "0.1.2")
|
| 299 | (source
|
| 300 | (origin
|
| 301 | (method url-fetch)
|
| 302 | (uri (hexpm-uri "table" version))
|
| 303 | (sha256
|
| 304 | (base32 "0aah0rkq6ikl1w359n65rmhk0p0npwj0fr35grf321pqzrzbr6by"))))
|
| 305 | (build-system mix-build-system)
|
| 306 | (synopsis "Unified access to tabular data")
|
| 307 | (description "This package provides @code{elixir-table}, a library that
|
| 308 | implements unified access to tabular data.")
|
| 309 | (home-page "https://hexdocs.pm/table/")
|
| 310 | (license license:asl2.0)))
|
| 311 |
|
| 312 | (define-public elixir-tds
|
| 313 | (package
|
| 314 | (name "elixir-tds")
|
| 315 | (version "2.3.8")
|
| 316 | (source
|
| 317 | (origin
|
| 318 | (method url-fetch)
|
| 319 | (uri (hexpm-uri "tds" version))
|
| 320 | (sha256
|
| 321 | (base32 "02y4ssdc7hcdxq6mdpc2x28z780wcb0m7y6pvrhfdan4sd6gms7s"))))
|
| 322 | (build-system mix-build-system)
|
| 323 | (propagated-inputs
|
| 324 | (list elixir-db-connection elixir-decimal elixir-jason
|
| 325 | elixir-table))
|
| 326 | (synopsis
|
| 327 | "Elixir implementation of the MS TDS protocol")
|
| 328 | (description
|
| 329 | "This package implements a Microsoft SQL Server client. More generally it
|
| 330 | provides an Elixir implementation of the MS TDS protocol.")
|
| 331 | (home-page "https://hexdocs.pm/tds/")
|
| 332 | (license license:asl2.0)))
|
| 333 |
|
| 334 | (define-public elixir-typed-ecto-schema
|
| 335 | (package
|
| 336 | (name "elixir-typed-ecto-schema")
|
| 337 | (version "0.4.3")
|
| 338 | (source
|
| 339 | (origin
|
| 340 | (method url-fetch)
|
| 341 | (uri (hexpm-uri "typed_ecto_schema" version))
|
| 342 | (sha256
|
| 343 | (base32 "1h1bkdxgw7gpsf2mgf6zgayp6i6gk6d65bp0b29gm9gxp4srpgfw"))))
|
| 344 | (build-system mix-build-system)
|
| 345 | (propagated-inputs (list elixir-ecto))
|
| 346 | (synopsis "Ecto schemas with typespecs without the boilerplate")
|
| 347 | (description
|
| 348 | "This package provides a library to define @code{Ecto} schemas with
|
| 349 | typespecs without all the boilerplate code.")
|
| 350 | (home-page "https://hexdocs.pm/typed_ecto_schema/")
|
| 351 | (license license:asl2.0)))
|
| 352 |
|
| 353 | (define-public elixir-uniq
|
| 354 | (package
|
| 355 | (name "elixir-uniq")
|
| 356 | (version "0.6.3")
|
| 357 | (source
|
| 358 | (origin
|
| 359 | (method url-fetch)
|
| 360 | (uri (hexpm-uri "uniq" version))
|
| 361 | (sha256
|
| 362 | (base32 "0zbcr9ddl6wri4wb5prlawjp2jjy95883g707mfsbwr0186r0aib"))))
|
| 363 | (build-system mix-build-system)
|
| 364 | (native-inputs (list elixir-stream-data))
|
| 365 | (propagated-inputs (list elixir-ecto))
|
| 366 | (synopsis
|
| 367 | "Provides UUID generation, parsing, and formatting")
|
| 368 | (description
|
| 369 | "This package provides UUID generation, parsing, and formatting. Supports RFC
|
| 370 | 4122, and the v6 draft extension.")
|
| 371 | (home-page "https://hexdocs.pm/uniq/")
|
| 372 | (license license:asl2.0)))
|
| 373 |
|
| 374 | (define-public elixir-uuidv7
|
| 375 | (package
|
| 376 | (name "elixir-uuidv7")
|
| 377 | (version "1.0.0")
|
| 378 | (source
|
| 379 | (origin
|
| 380 | (method url-fetch)
|
| 381 | (uri (hexpm-uri "uuidv7" version))
|
| 382 | (sha256
|
| 383 | (base32 "1g2c8imkk7pgcvc5ns2v1b0zils3ai1yym4s3a5psvs511qk7k8f"))))
|
| 384 | (build-system mix-build-system)
|
| 385 | (propagated-inputs (list elixir-ecto))
|
| 386 | (synopsis "UUID v7 implementation and @code{Ecto.Type} for Elixir")
|
| 387 | (description
|
| 388 | "This package provides a UUID v7 implementation and @code{Ecto.Type}
|
| 389 | for Elixir.")
|
| 390 | (home-page "https://hexdocs.pm/uuidv7/")
|
| 391 | (license license:expat)))
|