Sha256: 0836d08d383e196e4b2e7e265d52e682a65e294891f49f3fdbd1a91b549e732b
Contents?: true
Size: 1.54 KB
Versions: 5
Compression:
Stored size: 1.54 KB
Contents
module Timetrap class Entry < Sequel::Model plugin :schema class << self # a class level instance variable that controls whether or not all entries # should respond to #start and #end with times rounded to 15 minute # increments. attr_accessor :round end def round? !!self.class.round end def start= time self[:start]= Chronic.parse(time) || time end def end= time self[:end]= Chronic.parse(time) || time end def start round? ? rounded_start : self[:start] end def end round? ? rounded_end : self[:end] end def end_or_now self.end || (round? ? round(Time.now) : Time.now) end def rounded_start round(self[:start]) end def rounded_end round(self[:end]) end def round time return nil unless time Time.at( if (r = time.to_i % 900) < 450 time.to_i - r else time.to_i + (900 - r) end ) end def self.sheets map{|e|e.sheet}.uniq.sort end # do a quick pseudo migration. This should only get executed on the first run set_schema do primary_key :id column :note, :string column :start, :timestamp column :end, :timestamp column :sheet, :string end create_table unless table_exists? end class Meta < Sequel::Model(:meta) plugin :schema set_schema do primary_key :id column :key, :string column :value, :string end create_table unless table_exists? end end
Version data entries
5 entries across 5 versions & 2 rubygems