Class: CouchbaseOrm::IndexSchema::Dumper

Inherits:
Object
  • Object
show all
Defined in:
lib/couchbase-orm/index_schema/dumper.rb

Instance Method Summary collapse

Constructor Details

#initialize(context: CouchbaseOrm::IndexMigrationContext.new, path: CouchbaseOrm.config.index.schema_path) ⇒ Dumper

Returns a new instance of Dumper.



8
9
10
11
# File 'lib/couchbase-orm/index_schema/dumper.rb', line 8

def initialize(context: CouchbaseOrm::IndexMigrationContext.new, path: CouchbaseOrm.config.index.schema_path)
  @context = context
  @path = path
end

Instance Method Details

#dumpObject



13
14
15
16
17
18
19
20
21
22
23
24
25
26
# File 'lib/couchbase-orm/index_schema/dumper.rb', line 13

def dump
  indexes = {}
  migrations = @context.migrations

  migrations.each do |migration_def|
    replay_migration(migration_def, indexes)
  end

  schema_source = source_for(indexes, version: migrations.max_by(&:version)&.version)

  FileUtils.mkdir_p(File.dirname(@path))
  File.write(@path, schema_source)
  @path
end

#source_for(indexes, version: nil) ⇒ Object



28
29
30
31
32
33
34
35
36
37
38
39
40
# File 'lib/couchbase-orm/index_schema/dumper.rb', line 28

def source_for(indexes, version: nil)
  lines = []
  lines << definition_header(version)

  index_names = indexes.keys.sort_by(&:to_s)
  index_names.each_with_index do |name, index|
    lines.concat(index_lines(indexes[name]))
    lines << '' unless index == index_names.length - 1
  end

  lines << 'end'
  "#{lines.join("\n")}\n"
end