Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/luckyframework/avram
A Crystal database wrapper for reading, writing, and migrating Postgres databases.
https://github.com/luckyframework/avram
crystal hacktoberfest lucky-framework orm
Last synced: 4 days ago
JSON representation
A Crystal database wrapper for reading, writing, and migrating Postgres databases.
- Host: GitHub
- URL: https://github.com/luckyframework/avram
- Owner: luckyframework
- License: mit
- Created: 2019-02-02T15:07:51.000Z (almost 6 years ago)
- Default Branch: main
- Last Pushed: 2024-11-10T16:14:07.000Z (about 1 month ago)
- Last Synced: 2024-11-29T02:17:32.165Z (14 days ago)
- Topics: crystal, hacktoberfest, lucky-framework, orm
- Language: Crystal
- Homepage: https://luckyframework.github.io/avram/
- Size: 26.1 MB
- Stars: 165
- Watchers: 10
- Forks: 64
- Open Issues: 205
-
Metadata Files:
- Readme: README.md
- Contributing: CONTRIBUTING.md
- License: LICENSE
- Code of conduct: CODE_OF_CONDUCT.md
Awesome Lists containing this project
- awesome-crystal - avram - A database wrapper for reading, writing, and migrating Postgres databases. (ORM/ODM Extensions)
- awesome-crystal - avram - A database wrapper for reading, writing, and migrating Postgres databases (ORM/ODM Extensions)
README
# Avram
[![API Documentation Website](https://img.shields.io/website?down_color=red&down_message=Offline&label=API%20Documentation&up_message=Online&url=https%3A%2F%2Fluckyframework.github.io%2Favram%2F)](https://luckyframework.github.io/avram)
Database ORM built for the [Lucky Framework](https://luckyframework.org/) written in Crystal. Supporting PostgreSQL 12+ and based off principals of [Elixir Ecto](https://hexdocs.pm/ecto/Ecto.html) and [Rails ActiveRecord](https://guides.rubyonrails.org/active_record_basics.html).
### Why Avram?
The name comes from [Henriette Avram](https://en.wikipedia.org/wiki/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`:
```yaml
dependencies:
avram:
github: luckyframework/avram
```## Usage
```crystal
require "avram"# Define your database
class AppDatabase < Avram::Database
endAppDatabase.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
endtable :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](https://luckyframework.org/guides/database/intro-to-avram-and-orms).
## Contributing
1. Fork it ( https://github.com/luckyframework/avram/fork )
1. Create your feature branch (git checkout -b my-new-feature)
1. Make your changes
1. Run specs `crystal spec`
1. Check formatting `crystal tool format spec/ src/`
1. Check ameba `./bin/ameba`
1. Commit your changes (git commit -am 'Add some feature')
1. Push to the branch (git push origin my-new-feature)
1. Create a new Pull Request> Docker is provided for quick setup and testing. You can run `./script/setup` and `./script/test` for ease.
## Contributors
[paulcsmith](https://github.com/paulcsmith) Paul Smith - Original Creator of Lucky
Made with [contrib.rocks](https://contrib.rocks).