class BomDB::Models::Verse

Public Class Methods

new(db) click to toggle source
# File lib/bomdb/models/verse.rb, line 4
def initialize(db)
  @db = db
end

Public Instance Methods

create(chapter:, verse:, book_name: nil, book_id: nil, heading: false, range_id: nil) click to toggle source

Create a verse and return its verse_id

# File lib/bomdb/models/verse.rb, line 19
def create(chapter:, verse:, book_name: nil, book_id: nil, heading: false, range_id: nil)
  @db[:verses].insert(
    book_id:       book_by_name_or_id(book_name, book_id),
    verse_chapter: chapter,
    verse_number:  verse,
    verse_heading: heading ? 0 : nil,
    verse_range_id: range_id
  )
end
find(chapter:, verse:, book_name: nil, book_id: nil, heading: false) click to toggle source

Find a verse and return a hash, or nil if not found

# File lib/bomdb/models/verse.rb, line 9
def find(chapter:, verse:, book_name: nil, book_id: nil, heading: false)
  @db[:verses].where(
    book_id:       book_by_name_or_id(book_name, book_id),
    verse_chapter: chapter,
    verse_number:  verse,
    verse_heading: heading ? 0 : nil
  ).first
end
find_or_create(chapter:, verse:, book_name: nil, book_id: nil, heading: false, range_id: nil) click to toggle source

Returns a verse_id after finding or creating the verse

# File lib/bomdb/models/verse.rb, line 30
def find_or_create(chapter:, verse:, book_name: nil, book_id: nil, heading: false, range_id: nil)
  v = find(
    chapter: chapter, verse: verse,
    book_name: book_name, book_id: book_id,
    heading: heading
  )
  (v && v[:verse_id]) || create(
    chapter: chapter, verse: verse,
    book_name: book_name, book_id: book_id,
    heading: heading, range_id: range_id
  )
end

Protected Instance Methods

book_by_name_or_id(book_name, book_id) click to toggle source
# File lib/bomdb/models/verse.rb, line 45
def book_by_name_or_id(book_name, book_id)
  if book_id.nil? and book_name.nil?
    raise ArgumentError, "book_name or book_id is required"
  elsif book_id.nil?
    @db[:books].where(book_name: book_name).first[:book_id]
  else
    book_id
  end
end