class Prostore::Adapter::SQLite::Adapter

Overview

The SQLite implementation of Prostore::Adapter::Base.

Defined in:

prostore/adapter/sqlite/adapter.cr

Constant Summary

PRAGMA_KEYS = ["journal_mode", "synchronous", "cache_size", "temp_store"] of ::String

Pragma names whose values may be extracted from the connection URL query string and applied per-connection via session_setup.

Constructors

Instance Method Summary

Instance methods inherited from class Prostore::Adapter::Base

backup(dest : String) : Nil backup, bookkeeping_id_column_def : String bookkeeping_id_column_def, db : DB::Database db, insert_returning_id(executor : Executor, sql : String, args : Array) : Int64
insert_returning_id(executor : Executor, sql : String, *args) : Int64
insert_returning_id
, introspect_all(executor : Executor = @db) : Array(LiveTable) introspect_all, introspect_table(name : String, executor : Executor = @db) : LiveTable introspect_table, introspect_table_names(executor : Executor = @db) : Array(String) introspect_table_names, like_operator : String like_operator, placeholder(n : Int32) : String placeholder, placeholders(count : Int32) : String placeholders, quote_ident(name : String) : String quote_ident, quote_string(s : String) : String quote_string, render_create_index(table : String, index : Schema::Index) : String render_create_index, render_create_table(definition : Schema::Definition) : String render_create_table, session_setup(conn : DB::Connection) : Nil session_setup, supports_add_constraint_not_valid? : Bool supports_add_constraint_not_valid?, supports_alter_drop_column? : Bool supports_alter_drop_column?, supports_alter_set_not_null? : Bool supports_alter_set_not_null?, supports_concurrent_index? : Bool supports_concurrent_index?

Constructor methods inherited from class Prostore::Adapter::Base

new(db : DB::Database) new

Constructor Detail

def self.new(db : DB::Database, pragmas : Hash(String, String) = {} of String => String) #

[View source]

Instance Method Detail

def backup(dest : String) : Nil #
Description copied from class Prostore::Adapter::Base

Write a point-in-time backup to dest (an absolute file path). SQLite uses VACUUM INTO; PostgreSQL shells out to pg_dump.


[View source]
def bookkeeping_id_column_def : String #
Description copied from class Prostore::Adapter::Base

Column DDL fragment for an auto-incrementing BIGINT primary key on the bookkeeping tables. SQLite emits INTEGER PRIMARY KEY AUTOINCREMENT while Postgres emits BIGSERIAL PRIMARY KEY (or identity). Each adapter overrides.


[View source]
def insert_returning_id(executor : Executor, sql : String, args : Array) : Int64 #
Description copied from class Prostore::Adapter::Base

Array-args overload for callers that build their argument list dynamically (e.g., the record-layer INSERT helper).


[View source]
def insert_returning_id(executor : Executor, sql : String, *args) : Int64 #
Description copied from class Prostore::Adapter::Base

INSERT a row and return its newly-assigned ID. SQLite uses last_insert_rowid(); Postgres uses RETURNING id. The adapter encapsulates the difference.


[View source]
def introspect_table(name : String, executor : Executor = @db) : LiveTable #

[View source]
def introspect_table_names(executor : Executor = @db) : Array(String) #

[View source]
def like_operator : String #
Description copied from class Prostore::Adapter::Base

The operator for a case-insensitive substring match in a WHERE clause. SQLite's LIKE is case-insensitive for ASCII by default; PostgreSQL exposes ILIKE for the same purpose.


[View source]
def placeholder(n : Int32) : String #
Description copied from class Prostore::Adapter::Base

The n-th positional parameter placeholder in the adapter's SQL syntax. SQLite uses ? (position-implicit). PostgreSQL uses $1, $2, … (position-explicit). crystal-db does NOT translate between them, so SQL strings shared by both adapters must build placeholders via this method.


[View source]
def quote_ident(name : String) : String #

[View source]
def quote_string(s : String) : String #

[View source]
def render_create_index(table : String, index : Schema::Index) : String #

[View source]
def render_create_table(definition : Schema::Definition, pk_lookup : Hash(String, Array(String))) : String #

[View source]
def render_create_table(definition : Schema::Definition) : String #

[View source]
def session_setup(conn : DB::Connection) : Nil #
Description copied from class Prostore::Adapter::Base

Connection-establishment hook. Adapters override to set per-connection session state (SQLite's PRAGMA foreign_keys = ON).


[View source]