Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/xerions/mariaex
Pure Elixir database driver for MariaDB / MySQL
https://github.com/xerions/mariaex
Last synced: 2 months ago
JSON representation
Pure Elixir database driver for MariaDB / MySQL
- Host: GitHub
- URL: https://github.com/xerions/mariaex
- Owner: xerions
- License: other
- Created: 2014-12-08T22:54:56.000Z (about 10 years ago)
- Default Branch: master
- Last Pushed: 2021-12-09T23:29:29.000Z (about 3 years ago)
- Last Synced: 2024-05-09T13:50:49.892Z (8 months ago)
- Language: Elixir
- Homepage:
- Size: 517 KB
- Stars: 261
- Watchers: 17
- Forks: 89
- Open Issues: 58
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- License: LICENSE
Awesome Lists containing this project
- freaking_awesome_elixir - Elixir - MariaDB/MySQL driver for Elixir. (ORM and Datamapping)
- fucking-awesome-elixir - mariaex - MariaDB/MySQL driver for Elixir. (ORM and Datamapping)
- awesome-elixir - mariaex - MariaDB/MySQL driver for Elixir. (ORM and Datamapping)
README
Mariaex [![Build Status](https://travis-ci.org/xerions/mariaex.svg)](https://travis-ci.org/xerions/mariaex) [![Coverage Status](https://coveralls.io/repos/xerions/mariaex/badge.svg?branch=master&service=github)](https://coveralls.io/github/xerions/mariaex?branch=master) [![Deps Status](https://beta.hexfaktor.org/badge/all/github/xerions/mariaex.svg)](https://beta.hexfaktor.org/github/xerions/mariaex)
=======## Usage
Add Mariaex as a dependency in your `mix.exs` file.
```elixir
def deps do
[{:mariaex, "~> 0.8.2"} ]
end
```After you are done, run `mix deps.get` in your shell to fetch and compile Mariaex. Start an interactive Elixir shell with `iex -S mix`.
```elixir
iex(1)> {:ok, p} = Mariaex.start_link(username: "ecto", database: "ecto_test")
{:ok, #PID<0.108.0>}iex(2)> Mariaex.query(p, "CREATE TABLE test1 (id serial, title text)")
{:ok, %Mariaex.Result{columns: [], command: :create, num_rows: 0, rows: []}}iex(3)> Mariaex.query(p, "INSERT INTO test1 VALUES(1, 'test')")
{:ok, %Mariaex.Result{columns: [], command: :insert, num_rows: 1, rows: []}}iex(4)> Mariaex.query(p, "INSERT INTO test1 VALUES(2, 'test2')")
{:ok, %Mariaex.Result{columns: [], command: :insert, num_rows: 1, rows: []}}iex(5)> Mariaex.query(p, "SELECT id, title FROM test1")
{:ok,
%Mariaex.Result{columns: ["id", "title"], command: :select, num_rows: 2,
rows: [[1, "test"], [2, "test2"]}}
```## Configuration
Important configuration, which depends on used charset for support unicode chars, see `:binary_as`
in `Mariaex.start_link/1`### JSON library
As default, [Poison](https://github.com/devinus/poison) is used for JSON library in mariaex to support JSON column.
If you want to use another library, please set `config.exs` like below.
```elixir
config :mariaex, json_library: SomeLibrary
```
=======
## Data representationMySQL Elixir
---------- ------
NULL nil
TINYINT 42
INT 42
BIGINT 42
FLOAT 42.0
DOUBLE 42.0
DECIMAL #Decimal<42.0> *
VARCHAR "eric"
TEXT "eric"
BLOB <<42>>
DATE %Date{year: 2013, month: 10, day: 12}
TIME %Time{hour: 0, minute: 37, second: 14} **
YEAR 2013
DATETIME %DateTime{year: 2013 month: 10, day: 12, hour: 0, minute: 37, second: 14} **
TIMESTAMP %DateTime{year: 2013 month: 10, day: 12, hour: 0, minute: 37, second: 14} **
BIT << 1 >>
GEOMETRY/POINT %Mariaex.Geometry.Point{coordinates: {1.0, -1.0}, srid: 42}
GEOMETRY/LINESTRING %Mariaex.Geometry.LineString{coordinates: [{0.0, 0.0}, {10.0, 10.0}, {20.0, 25.0}, {50.0, 60.0}], srid: 0}
GEOMETRY/POLYGON %Mariaex.Geometry.Polygon{coordinates: [[{0.0, 0.0}, {10.0, 0.0}, {10.0, 10.0}, {0.0, 10.0}, {0.0, 0.0}], [{5.0, 5.0}, {7.0, 5.0}, {7.0, 7.0}, {5.0, 7.0}, {5.0, 5.0}]], srid: 0}