Sha256: f24a922fbf31a4527f7a0e7323a645d0042458db7c837c36eb689404521d18a0

Contents?: true

Size: 978 Bytes

Versions: 6

Compression:

Stored size: 978 Bytes

Contents

require_relative './extralite_ext'

# Extralite is a Ruby gem for working with SQLite databases
module Extralite
  # A base class for Extralite exceptions
  class Error < RuntimeError
  end

  # An exception representing an SQL error emitted by SQLite
  class SQLError < Error
  end

  # An exception raised when an SQLite database is busy (locked by another
  # thread or process)
  class BusyError < Error
  end

  # An SQLite database
  class Database
    alias_method :execute, :query

    TABLES_SQL = <<~SQL
      SELECT name FROM sqlite_master
      WHERE type ='table'
        AND name NOT LIKE 'sqlite_%';
    SQL

    def tables
      query_single_column(TABLES_SQL)
    end

    def pragma(value)
      value.is_a?(Hash) ? pragma_set(value) : pragma_get(value)
    end

    def pragma_set(values)
      sql = values.inject(+'') { |s, (k, v)| s += "pragma #{k}=#{v}; " }
      query(sql)
    end

    def pragma_get(key)
      query("pragma #{key}")
    end
  end
end

Version data entries

6 entries across 6 versions & 2 rubygems

Version Path
extralite-bundle-1.19 lib/extralite.rb
extralite-1.19 lib/extralite.rb
extralite-bundle-1.18 lib/extralite.rb
extralite-1.18 lib/extralite.rb
extralite-bundle-1.17 lib/extralite.rb
extralite-1.17 lib/extralite.rb