crecto v0.12.1
Crecto
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/
Example
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)
Usage and Guides
New website and API docs coming soon!
Benchmarks
Development
Testing
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.
Contributing
- 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
Development Notes
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.
Thanks / Inspiration
crecto
- 344
- 43
- 21
- 14
- 4
- 10 months ago
- November 19, 2016
MIT License
Thu, 21 Nov 2024 05:20:33 GMT