Class: ActualDbSchema::Store::DbAdapter

Inherits:
Object
  • Object
show all
Defined in:
lib/actual_db_schema/store.rb

Overview

Stores migrated files in the database.

Constant Summary collapse

TABLE_NAME =
"actual_db_schema_migrations"
RECORD_COLUMNS =
%w[version filename content branch migrated_at].freeze

Instance Method Summary collapse

Instance Method Details

#delete(filename) ⇒ Object



172
173
174
175
176
177
178
179
180
181
182
183
# File 'lib/actual_db_schema/store.rb', line 172

def delete(filename)
  version = extract_version(filename)
  return unless version

  if table_exists?
    connection.execute("      DELETE FROM \#{quoted_table}\n      WHERE \#{quoted_column(\"version\")} = \#{connection.quote(version)}\n    SQL\n  end\n  File.delete(filename) if File.exist?(filename)\nend\n".squish)

#materialize_allObject



189
190
191
192
193
194
195
196
197
198
199
200
201
# File 'lib/actual_db_schema/store.rb', line 189

def materialize_all
  return unless table_exists?

  FileUtils.mkdir_p(folder)
  rows = connection.exec_query("    SELECT filename, content\n    FROM \#{quoted_table}\n  SQL\n\n  rows.each do |row|\n    write_cache_file(row[\"filename\"], row[\"content\"])\n  end\nend\n".squish)

#migration_filesObject



167
168
169
170
# File 'lib/actual_db_schema/store.rb', line 167

def migration_files
  materialize_all
  Dir["#{folder}/**/[0-9]*_*.rb"]
end

#readObject



154
155
156
157
158
159
160
161
162
163
164
165
# File 'lib/actual_db_schema/store.rb', line 154

def read
  return {} unless table_exists?

  rows = connection.exec_query("    SELECT version, migrated_at, branch\n    FROM \#{quoted_table}\n  SQL\n\n  rows.map do |row|\n    Item.new(row[\"version\"].to_s, row[\"migrated_at\"], row[\"branch\"])\n  end.index_by(&:version)\nend\n".squish)

#stored_migration?(filename) ⇒ Boolean

Returns:

  • (Boolean)


185
186
187
# File 'lib/actual_db_schema/store.rb', line 185

def stored_migration?(filename)
  filename.to_s.start_with?(folder.to_s)
end

#write(filename) ⇒ Object



142
143
144
145
146
147
148
149
150
151
152
# File 'lib/actual_db_schema/store.rb', line 142

def write(filename)
  ensure_table!

  version = extract_version(filename)
  return unless version

  basename = File.basename(filename)
  content = File.read(filename)
  upsert_record(version, basename, content, Git.current_branch, Time.current)
  write_cache_file(basename, content)
end