Class: TTrack::DataStore

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

Instance Method Summary collapse

Constructor Details

#initialize(dbname, timezone = "+02:00", version = 'v0.3.3', 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, timezone="+02:00", version='v0.3.3', verbosity=0
  @dbname = 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



140
141
142
143
144
# File 'lib/ttrack/datastore.rb', line 140

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] == "" ? false : current[0][0]
end

#getissuesandtimesbyname(issuename) ⇒ Object



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

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

#getissuesbyname(issuename) ⇒ Object



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

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

#getnamebyissueid(issueid) ⇒ Object



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

def getnamebyissueid issueid
  result = @db.execute "SELECT name FROM timesheet WHERE id=%d" % issueid
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



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

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



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

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

#gettimesheetObject



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

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

#isissue?(id) ⇒ Boolean

Returns:

  • (Boolean)


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

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

#settstart(id, tstart) ⇒ Object



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

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

#settstop(id, tstop) ⇒ Object



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

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
95
# 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
    current.to_i
  else
    false
  end
end