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/avram
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.
- 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/setup
and./script/test
for ease.
paulcsmith Paul Smith - Original Creator of Lucky
Made with contrib.rocks.