Class: TTrack::DataStore

Inherits:
Object
  • Object
show all
Defined in:
lib/ttrack/datastore.rb

Instance Method Summary collapse

Constructor Details

#initialize(dbname = ".timetrackerdb", timezone = "+02:00", version = 'v0.1.2', verbosity = 0) ⇒ DataStore

Returns a new instance of DataStore.



6
7
8
9
10
11
12
13
14
15
16
17
18
19
# File 'lib/ttrack/datastore.rb', line 6

def initialize dbname=".timetrackerdb", timezone="+02:00", version='v0.1.2', verbosity=0
  @dbname = "%s/%s" % [ENV['HOME'], dbname]
  @timezone = timezone
  @version = version
  @verbosity = verbosity

  if FileTest.zero?(@dbname) or not FileTest.file?(@dbname)
    @db = SQLite3::Database.new( @dbname )
    createschema
    init(timezone, version, verbosity)
  else
    @db = SQLite3::Database.open( @dbname )
  end
end

Instance Method Details

#cleanupObject



135
136
137
138
139
# File 'lib/ttrack/datastore.rb', line 135

def cleanup
  droptables
  createschema
  init(@timezone, @version, @verbosity)
end

#getcurrentObject



64
65
66
67
# File 'lib/ttrack/datastore.rb', line 64

def getcurrent
  current = @db.execute "SELECT current FROM system"
  current[0][0] == "" ? nil : current[0][0]
end

#getissuesandtimesbyname(issuename) ⇒ Object



114
115
116
# File 'lib/ttrack/datastore.rb', line 114

def getissuesandtimesbyname issuename
  @db.execute "SELECT tstart,tstop FROM timesheet WHERE name='%s'" % issuename
end

#getissuesidsbyname(issuename) ⇒ Object



118
119
120
# File 'lib/ttrack/datastore.rb', line 118

def getissuesidsbyname issuename
  @db.execute "SELECT id,tstart,tstop,notes FROM timesheet WHERE name='%s'" % issuename
end

#getstatusObject



69
70
71
72
73
74
75
76
77
# File 'lib/ttrack/datastore.rb', line 69

def getstatus
  current = getcurrent
  if current
    status = @db.execute "SELECT id,name FROM timesheet WHERE id=%d" % current
    status[0]
  else
    nil
  end
end

#gettime(issueid = false) ⇒ Object



96
97
98
99
100
101
102
103
104
# File 'lib/ttrack/datastore.rb', line 96

def gettime issueid=false
  issueid = issueid ? issueid : getcurrent
  if issueid
    time = @db.execute "SELECT tstart,tstop FROM timesheet WHERE id=%d" % issueid
    time[0]
  else
    false
  end
end

#gettimesbyissuename(issuename) ⇒ Object



110
111
112
# File 'lib/ttrack/datastore.rb', line 110

def gettimesbyissuename issuename
  @db.execute "SELECT tstart,tstop FROM timesheet WHERE name='%s'" % issuename
end

#gettimesheetObject



106
107
108
# File 'lib/ttrack/datastore.rb', line 106

def gettimesheet
  @db.execute "SELECT id,name,tstart,tstop,notes FROM timesheet"
end

#isissue?(id) ⇒ Boolean

Returns:

  • (Boolean)


130
131
132
133
# File 'lib/ttrack/datastore.rb', line 130

def isissue? id
  r = @db.execute "SELECT id from timesheet WHERE id=%d" % id
  r[0].nil? ? false : true
end

#settstart(id, tstart) ⇒ Object



122
123
124
# File 'lib/ttrack/datastore.rb', line 122

def settstart id, tstart
  @db.execute "UPDATE timesheet SET tstart=datetime('%s') WHERE id=%d" % [tstart, id]
end

#settstop(id, tstop) ⇒ Object



126
127
128
# File 'lib/ttrack/datastore.rb', line 126

def settstop id, tstop
  @db.execute "UPDATE timesheet SET tstop=datetime('%s') WHERE id=%d" % [tstop, id]
end

#startnew(issuename, notes = '') ⇒ Object



79
80
81
82
83
84
# File 'lib/ttrack/datastore.rb', line 79

def startnew issuename, notes=''
  @db.execute "INSERT INTO timesheet ( name, notes ) VALUES ( '%s', '%s' )" %
    [issuename, notes]
  latest = @db.execute "SELECT id FROM timesheet ORDER BY id DESC LIMIT 1"
  setcurrent latest[0][0]
end

#stoprunningObject



86
87
88
89
90
91
92
93
94
# File 'lib/ttrack/datastore.rb', line 86

def stoprunning
  current = getcurrent
  if current
    @db.execute "UPDATE timesheet set tstop = datetime('now') WHERE id = %d" % current
    @db.execute "UPDATE system SET current = '', latest = '%d'" % current
  else
    p "Not tracking"
  end
end