Class: Codebeacon::Tracer::DatabaseSchema

Inherits:
Object
  • Object
show all
Defined in:
lib/codebeacon/tracer/src/data/database.rb

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initializeDatabaseSchema

Returns a new instance of DatabaseSchema.



9
10
11
# File 'lib/codebeacon/tracer/src/data/database.rb', line 9

def initialize
  @db = initialize_db
end

Class Method Details

.trim_db_filesObject



40
41
42
43
44
45
46
47
48
49
50
51
# File 'lib/codebeacon/tracer/src/data/database.rb', line 40

def self.trim_db_files
  db_path = Codebeacon::Tracer.config.db_path
  db_files = Dir.glob(File.join(db_path, "*.db"))
  db_files.reject! { |file| File.symlink?(file) }
  db_files.sort_by! { |db_file| File.mtime(db_file) }
  db_files.reverse!

  db_files.each_with_index do |db_file, index|
    next if index < Codebeacon::Tracer.config.max_db_files
    File.delete(db_file)
  end
end

Instance Method Details

#create_indexesObject



34
35
36
37
38
# File 'lib/codebeacon/tracer/src/data/database.rb', line 34

def create_indexes
  MetadataMapper.create_indexes(db)
  TreeNodeMapper.create_indexes(db)
  NodeSourceMapper.create_indexes(db)
end

#create_tablesObject



28
29
30
31
32
# File 'lib/codebeacon/tracer/src/data/database.rb', line 28

def create_tables
  MetadataMapper.create_table(db)
  TreeNodeMapper.create_table(db)
  NodeSourceMapper.create_table(db)
end

#dbObject



13
14
15
# File 'lib/codebeacon/tracer/src/data/database.rb', line 13

def db
  @db
end

#initialize_dbObject



17
18
19
20
21
22
23
24
25
26
# File 'lib/codebeacon/tracer/src/data/database.rb', line 17

def initialize_db
  db_path = Codebeacon::Tracer.config.db_path
  timestamp = Time.now.strftime("%Y%m%d%H%M%S")
  db_name = "#{Codebeacon::Tracer.config.db_name}_#{timestamp}.db"
  db_symlink = File.join(db_path, "#{Codebeacon::Tracer.config.db_name}.db")

  File.delete(db_symlink) if File.exist?(db_symlink)
  FileUtils.ln_sf(db_name, db_symlink)
  SQLite3::Database.new(File.join(db_path, db_name))
end