Database wrapper and ORM for Crystal, inspired by Ecto
Robust database wrapper for Crystal. Inspired by Ecto for Elixir language.
With built in query composer, associations, transactions, validations, constraints, and more.
Website with guides and examples - https://www.crecto.dev/
user = User.new
user.name = "Shakira"
changeset = Repo.insert(user)
changeset.errors.any?
inserted_user = changeset.instance
inserted_user.name = "Keanu"
changeset = Repo.update(user)
changeset.errors.any?
updated_user = changeset.instance
changeset = Repo.delete(updated_user)
New website and API docs coming soon!
Specs are located in the specs
directory. Seeing as this is an ORM, running specs does require a database connection
of some kind. Copy the spec/repo.example.cr
file to spec/repo.cr
and fill in the connection details for your
database. Then run crystal spec
to run the specs.
Specs for all three supported database types can be run using docker-compose. Simply run docker-compose up
to start
the database containers and run the specs.
When developing against crecto, the database must exist prior to
testing. There are migrations for each database type in spec/migrations
,
and references on how to migrate then in the .travis.yml
file.
Create a new file spec/repo.cr
and create a module name Repo
to use for testing.
There are example repos for each database type in the spec folder: travis_pg_repo.cr
,
travis_mysql_repo.cr
, and travis_sqlite_repo.cr
When submitting a pull request, please test against all 3 databases.