Class: Foundries::Snapshot::Adapters::SqliteAdapter

Inherits:
Object
  • Object
show all
Defined in:
lib/foundries/snapshot/adapters/sqlite_adapter.rb

Instance Method Summary collapse

Constructor Details

#initialize(connection) ⇒ SqliteAdapter

Returns a new instance of SqliteAdapter.



7
8
9
# File 'lib/foundries/snapshot/adapters/sqlite_adapter.rb', line 7

def initialize(connection)
  @connection = connection
end

Instance Method Details

#capture(table_name, io) ⇒ Object



23
24
25
26
27
28
29
30
# File 'lib/foundries/snapshot/adapters/sqlite_adapter.rb', line 23

def capture(table_name, io)
  rows = @connection.select_all("SELECT * FROM #{quoted(table_name)}")
  rows.each do |row|
    values = row.values.map { |v| @connection.quote(v) }.join(", ")
    columns = row.keys.map { |k| @connection.quote_column_name(k) }.join(", ")
    io.puts "INSERT INTO #{quoted(table_name)} (#{columns}) VALUES (#{values});"
  end
end

#count(table_name) ⇒ Object



19
20
21
# File 'lib/foundries/snapshot/adapters/sqlite_adapter.rb', line 19

def count(table_name)
  @connection.select_value("SELECT COUNT(*) FROM #{quoted(table_name)}")
end

#disable_referential_integrityObject



38
39
40
41
42
43
# File 'lib/foundries/snapshot/adapters/sqlite_adapter.rb', line 38

def disable_referential_integrity
  @connection.execute("PRAGMA defer_foreign_keys = ON")
  yield
ensure
  @connection.execute("PRAGMA defer_foreign_keys = OFF")
end

#empty?(table_name) ⇒ Boolean

Returns:

  • (Boolean)


15
16
17
# File 'lib/foundries/snapshot/adapters/sqlite_adapter.rb', line 15

def empty?(table_name)
  count(table_name) == 0
end

#reset_sequence(table_name) ⇒ Object



45
46
47
# File 'lib/foundries/snapshot/adapters/sqlite_adapter.rb', line 45

def reset_sequence(table_name)
  # SQLite auto-increments handle this naturally
end

#restore(table_name, io) ⇒ Object



32
33
34
35
36
# File 'lib/foundries/snapshot/adapters/sqlite_adapter.rb', line 32

def restore(table_name, io)
  io.each_line do |line|
    @connection.execute(line.strip) unless line.strip.empty?
  end
end

#table_namesObject



11
12
13
# File 'lib/foundries/snapshot/adapters/sqlite_adapter.rb', line 11

def table_names
  @connection.tables - %w[schema_migrations ar_internal_metadata]
end