Database ORM built for the Lucky Framework written in Crystal. Supporting PostgreSQL 12+ and based off principals of Elixir Ecto and Rails ActiveRecord.
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.
Add this to your application's shard.yml:
dependencies:
avram:
github: luckyframework/avramrequire"avram"# Define your databaseclassAppDatabase < Avram::DatabaseendAppDatabase.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 databaseAvram.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 =falseend# Create your read-only modelclassPerson < Avram::Modeldefself.database : Avram::Database.class
AppDatabaseend
table :peopledo
column name : String
column age : Int32
column programmer : Bool=trueendend# Insert a new recordPerson::SaveOperation.create!(name:"Henriette Davidson Avram", age:86)
# Query for a record
person =Person::BaseQuery.new.name.ilike("%avram")
person.programmer? #=> trueFor more details, read the guides.
- 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.
paulcsmith Paul Smith - Original Creator of Lucky
Made with contrib.rocks.