Jennifer SQLite3 adapter
SQLite3 adapter for Jennifer.
- Add the dependencies to your
dependencies: sqlite3: github: crystal-lang/crystal-sqlite3 version: "0.18.0" jennifer_sqlite3_adapter: github: imdrasil/jennifer_sqlite3_adapter version: "~> 0.3.1"
Current adapter version is tested with
0.18.0sqlite3 driver but other versions may also work
This shard supports Jennifer
0.9.0 and above. It is tested with SQLite
require "jennifer" require "jennifer_sqlite3_adapter" Jennifer::Config.configure do |conf| conf.adapter = "sqlite3" conf.host = "." conf.db = "test.db" end
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 |
| --- | --- | --- |
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.
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.
- 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
- Roman Kalnytskyi - creator and maintainer