module Recorder::DB

Public Class Methods

prepare() click to toggle source
# File lib/recorder/db.rb, line 10
def self.prepare
  database_path = File.join(ENV['HOME'], '.recorder','recorder.sqlite3')

  connect_database database_path
  create_table_if_not_exists database_path
end

Private Class Methods

connect_database(path) click to toggle source
# File lib/recorder/db.rb, line 17
def self.connect_database(path)
  spec = {adapter: 'sqlite3', database: path}
  ActiveRecord::Base.establish_connection spec
end
create_database_path(path) click to toggle source
# File lib/recorder/db.rb, line 41
def self.create_database_path(path)
  FileUtils.mkdir_p File.dirname(path)
end
create_table_if_not_exists(path) click to toggle source
# File lib/recorder/db.rb, line 22
def self.create_table_if_not_exists(path)
  create_database_path path

  connection = ActiveRecord::Base.connection

  return if connection.table_exists?(:data)

  connection.create_table :data do |d|
    d.column :weight,  :real, null: false
    d.column :bodyfat, :real, null: true
    d.column :date, :text, null: true
    d.column :memo, :text, null: true
    d.timestamps
  end
  connection.add_index :data, :created_at
  connection.add_index :data, :date

end