Jennifer SQLite3 adapter
SQLite3 adapter for Jennifer.
Installation
- Add the dependency to your
shard.yml
:
dependencies:
jennifer_sqlite3_adapter:
github: imdrasil/jennifer_sqlite3_adapter
- Run
shards install
Usage
This shard requires Jennifer 0.8.3
. It is tested with SQLite 3.22.0 version.
require "jennifer"
require "jennifer_sqlite3_adapter"
Jennifer::Config.configure do |conf|
conf.adapter = "sqlite3"
conf.host = "."
conf.db = "test.db"
end
user
and password
configuration is not required as database is SQLite doesn't provide db-user authentication and they are ignored. host
options is used to specify path to db-file, db
- file name.
As
Supported data types
| Method | SQLite3 | Crystal type |
| --- | --- | --- |
| #bool
| INTEGER
| Bool
|
| #integer
| INTEGER
| Int32
|
| #bigint
| INTEGER
| Int32
|
| #short
| INTEGER
| Int32
|
| #tinyint
| INTEGER
| Int32
|
| #float
| REAL
| Float64
|
| #double
| REAL
| Float64
|
| #real
| REAL
| Float64
|
| #text
| TEXT
| String
|
| #string
| TEXT
| String
|
| #varchar
| TEXT
| String
|
| #time
| TEXT
| Time
|
| #timestamp
| TEXT
| Time
|
Altering table
SQLite has no mechanism to alter existing table (except renaming it). Therefore operations, listed below, do multiple steps to achieve altering table: coping table schema to new temp table, coping data to new table, extending new table with required options, dropping old table and renaming temp table to original name:
- dropping column
- changing column
- adding foreign key
- dropping foreign key
It is necessary to notice that all those operations keep all data and indexes.
Foreign key
At a startup adapter automatically enable foreign keys executing PRAGMA foreign_keys = ON
.
But be aware using migrations - as described above, some table manipulations will recreate a table.
To avoid breaking of any foreign key, adapter will try to disable them until the end of a manipulation,
but this is possible only outside of a transaction. Therefore in a such kind of migrations add
with_transaction false
at the class body to disable automatic transaction around migration methods.
Contributing
- Fork it (<https://github.com/imdrasil/jennifer_sqlite3_adapter/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
Contributors
- Roman Kalnytskyi - creator and maintainer