Include activerecords + in-memory sqlite3.
This commit is contained in:
parent
c2524fc675
commit
5caa340a7a
9 changed files with 93 additions and 2 deletions
|
@ -5,6 +5,7 @@ require 'pp'
|
||||||
require 'date'
|
require 'date'
|
||||||
require 'optparse'
|
require 'optparse'
|
||||||
require 'yaml'
|
require 'yaml'
|
||||||
|
require 'active_record'
|
||||||
|
|
||||||
require 'timecost'
|
require 'timecost'
|
||||||
|
|
||||||
|
|
6
bin/git-timecost-console.rb
Executable file
6
bin/git-timecost-console.rb
Executable file
|
@ -0,0 +1,6 @@
|
||||||
|
|
||||||
|
#require 'pry'
|
||||||
|
require 'timecost'
|
||||||
|
|
||||||
|
bindings.pry
|
||||||
|
|
|
@ -1,4 +1,5 @@
|
||||||
|
|
||||||
|
require 'timecost/db'
|
||||||
require 'timecost/commit'
|
require 'timecost/commit'
|
||||||
require 'timecost/range'
|
require 'timecost/range'
|
||||||
require 'timecost/author_list'
|
require 'timecost/author_list'
|
||||||
|
|
|
@ -1,5 +1,18 @@
|
||||||
|
|
||||||
|
ActiveRecord::Schema.define do
|
||||||
|
create_table :commits_v2 do |table|
|
||||||
|
table.column :commit, :string # ref to object
|
||||||
|
table.column :note, :string
|
||||||
|
table.column :author, :author
|
||||||
|
table.column :date, :date
|
||||||
|
table.column :range_id, :integer
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
module TimeCost
|
module TimeCost
|
||||||
|
class CommitV2 < ActiveRecord::Base
|
||||||
|
belongs_to :ranges_v2
|
||||||
|
end
|
||||||
|
|
||||||
class Commit
|
class Commit
|
||||||
attr_accessor :author, :commit, :date, :note
|
attr_accessor :author, :commit, :date, :note
|
||||||
|
|
11
lib/timecost/db.rb
Normal file
11
lib/timecost/db.rb
Normal file
|
@ -0,0 +1,11 @@
|
||||||
|
|
||||||
|
require 'active_record'
|
||||||
|
|
||||||
|
ActiveRecord::Base.logger = Logger.new(STDERR)
|
||||||
|
#ActiveRecord::Base.colorize_logging = false
|
||||||
|
|
||||||
|
ActiveRecord::Base.establish_connection(
|
||||||
|
adapter: "sqlite3",
|
||||||
|
database: ":memory:"
|
||||||
|
)
|
||||||
|
|
|
@ -1,5 +1,35 @@
|
||||||
|
|
||||||
|
ActiveRecord::Schema.define do
|
||||||
|
create_table :ranges_v2 do |table|
|
||||||
|
table.column :granularity, :float
|
||||||
|
table.column :author, :string
|
||||||
|
table.column :time_start, :date
|
||||||
|
table.column :time_stop, :date
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
module TimeCost
|
module TimeCost
|
||||||
|
class RangeV2 < ActiveRecord::Base
|
||||||
|
has_many :commits_v2
|
||||||
|
|
||||||
|
GRANULARITY_DEFAULT = 0.5
|
||||||
|
|
||||||
|
def to_s show_authors = true
|
||||||
|
val = "(%s)\t%s - %s\n" % [diff, fixed_start, @time_stop]
|
||||||
|
if show_authors then
|
||||||
|
val += "\tby %s\n" % @commits.first.author
|
||||||
|
end
|
||||||
|
@commits.each do |commit|
|
||||||
|
lines = []
|
||||||
|
lines.concat commit.note.split(/\n/)
|
||||||
|
r = lines.map{ |s| "\t %s" % s }.join "\n"
|
||||||
|
r[1] = '*'
|
||||||
|
val += r + "\n"
|
||||||
|
end
|
||||||
|
return val
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
class Range
|
class Range
|
||||||
attr_accessor :time_start, :time_stop, :commits, :author
|
attr_accessor :time_start, :time_stop, :commits, :author
|
||||||
|
|
||||||
|
|
|
@ -1,5 +1,6 @@
|
||||||
|
|
||||||
module TimeCost
|
module TimeCost
|
||||||
|
# Track = a list of range (for a given user)
|
||||||
class RangeList
|
class RangeList
|
||||||
def initialize
|
def initialize
|
||||||
@ranges = []
|
@ranges = []
|
||||||
|
|
|
@ -21,11 +21,38 @@ describe TimeCost::Range do
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
# Ref ----[----]-----
|
||||||
|
# overlapping :
|
||||||
|
# A -[----]--------
|
||||||
|
# B -------[----]--
|
||||||
|
# C -[----------]--
|
||||||
|
# D ------[]-------
|
||||||
|
# non-overlapping :
|
||||||
|
# E -[]------------
|
||||||
|
# F -----------[]--
|
||||||
describe '.overlap?' do
|
describe '.overlap?' do
|
||||||
it "must respond to .overlap?" do
|
it "must respond to .overlap?" do
|
||||||
end
|
end
|
||||||
|
|
||||||
it "must return false when ranges are not overlapping" do
|
it "must return false when ranges are not overlapping" do
|
||||||
|
# rangeRef = RangeV2.new
|
||||||
|
# rangeA = RangeV2.new ...
|
||||||
|
# FIXME: test rangeRef + rangeA
|
||||||
|
#
|
||||||
|
# rangeB = RangeV2.new
|
||||||
|
# FIXME: test rangeRef + rangeB
|
||||||
|
#
|
||||||
|
# rangeC = RangeV2.new
|
||||||
|
# FIXME: test rangeRef + rangeC
|
||||||
|
#
|
||||||
|
# rangeD = RangeV2.new
|
||||||
|
# FIXME: test rangeRef + rangeD
|
||||||
|
#
|
||||||
|
# rangeE = RangeV2.new
|
||||||
|
# FIXME: test rangeRef + rangeE
|
||||||
|
#
|
||||||
|
# rangeF = RangeV2.new
|
||||||
|
# FIXME: test rangeRef + rangeF
|
||||||
end
|
end
|
||||||
|
|
||||||
it "must return true when ranges are overlapping" do
|
it "must return true when ranges are overlapping" do
|
||||||
|
|
|
@ -19,6 +19,7 @@ Gem::Specification.new do |spec|
|
||||||
spec.require_paths = ["lib"]
|
spec.require_paths = ["lib"]
|
||||||
|
|
||||||
spec.add_runtime_dependency "activerecord", "~> 4.0"
|
spec.add_runtime_dependency "activerecord", "~> 4.0"
|
||||||
|
spec.add_runtime_dependency "sqlite3"
|
||||||
spec.add_development_dependency "bundler", "~> 1.6"
|
spec.add_development_dependency "bundler", "~> 1.6"
|
||||||
spec.add_development_dependency "rake", "~> 10.0"
|
spec.add_development_dependency "rake", "~> 10.0"
|
||||||
spec.add_development_dependency "minitest", "~> 4.7.5"
|
spec.add_development_dependency "minitest", "~> 4.7.5"
|
||||||
|
|
Loading…
Reference in a new issue