Database ORM built for the Lucky Framework written in Crystal. Supporting PostgreSQL 12+ and based off principals of Elixir Ecto and Rails ActiveRecord.
Why Avram?
The name comes from Henriette Avram.
Henriette Davidson Avram (October 7, 1919 – April 22, 2006) was a computer programmer and systems analyst who developed the MARC format (Machine Readable Cataloging), the international data standard for bibliographic and holdings information in libraries.
Installation
Add this to your application's shard.yml:
dependencies: avram: github: luckyframework/avram
Usage
require "avram" # Define your database class AppDatabase < Avram::Database end AppDatabase.configure do |settings| settings.credentials = Avram::Credentials.new( database: "my_app_development", username: "postgres", hostname: "localhost", password: "password", port: 5432, ) end # Configure Avram to use your database Avram.configure do |settings| settings.database_to_migrate = AppDatabase # When `true`, allow lazy loading (N+1). # If `false` raise an error if you forget to preload associations settings.lazy_load_enabled = true settings.query_cache_enabled = false end # Create your read-only model class Person < Avram::Model def self.database : Avram::Database.class AppDatabase end table :people do column name : String column age : Int32 column programmer : Bool = true end end # Insert a new record Person::SaveOperation.create!(name: "Henriette Davidson Avram", age: 86) # Query for a record person = Person::BaseQuery.new.name.ilike("%avram") person.programmer? #=> true
For more details, read the guides.
Contributing
- Fork it ( https://github.com/luckyframework/avram/fork )
- Create your feature branch (git checkout -b my-new-feature)
- Make your changes
- Run specs
crystal spec - Check formatting
crystal tool format spec/ src/ - Check ameba
./bin/ameba - Commit your changes (git commit -am 'Add some feature')
- Push to the branch (git push origin my-new-feature)
- Create a new Pull Request
Docker is provided for quick setup and testing. You can run
./script/setupand./script/testfor ease.
Contributors
paulcsmith Paul Smith - Original Creator of Lucky
Made with contrib.rocks.