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.
- Fork it ( https://github.com/Crecto/crecto/fork )
- Create your feature branch (git checkout -b my-new-feature)
- Commit your changes (git commit -am 'Add some feature')
- Push to the branch (git push origin my-new-feature)
- Create a new Pull Request
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.