jennifer_sqlite3_adapter v0.3.0
Jennifer SQLite3 adapter

SQLite3 adapter for Jennifer.
Installation
- Add the dependencies to your
shard.yml
:
dependencies:
sqlite3:
github: crystal-lang/crystal-sqlite3
version: "0.16.0"
jennifer_sqlite3_adapter:
github: imdrasil/jennifer_sqlite3_adapter
version: "~> 0.3.0"
Current adapter version is tested with
0.16.0
sqlite3 driver but other versions may also work
- Run
shards install
Usage
This shard supports Jennifer 0.9.0
and above. 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
configurations are not required as SQLite doesn't provide user authentication and they are ignored. host
options is used to specify database file folder path, db
- file name.
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
- 9
- 7
- 5
- 2
- 2 months ago
- January 11, 2019
MIT License
Sun, 17 Jan 2021 19:11:54 GMT