gotime-lib/transaction.go

101 lines
1.9 KiB
Go
Raw Permalink Normal View History

2017-01-11 23:45:04 +00:00
package gotime
type Transaction struct {
tp string
before *Timer
after *Timer
}
func CreateStartTimerTxns(tmr *Timer) []Transaction {
t := CreateIntervalTxn()
t.after = tmr
return []Transaction{*t}
}
func CreateStopTimerTxns(tmr *Timer) []Transaction {
t1 := CreateIntervalTxn()
t1.before = new(Timer)
t1.before.Beg = tmr.Beg
t1.before.Tags = tmr.Tags
2017-01-11 23:45:04 +00:00
t2 := CreateIntervalTxn()
t2.after = tmr
return []Transaction{*t1, *t2}
}
func CreateTagChangeTxns(tmr *Timer, oldTags []string) []Transaction {
t := CreateIntervalTxn()
t.before = new(Timer)
t.before.Beg = tmr.Beg
t.before.End = tmr.End
t.before.Tags = oldTags
t.after = tmr
return []Transaction{*t}
}
func CreateTxn(oldTmr, newTmr *Timer) *Transaction {
t := Transaction{
tp: "interval",
before: oldTmr,
after: newTmr,
}
return &t
}
2017-01-11 23:45:04 +00:00
func CreateIntervalTxn() *Transaction {
t := new(Transaction)
t.tp = "interval"
t.before = new(Timer)
t.after = new(Timer)
return t
}
func (t *Transaction) SetBefore(tmr *Timer) {
t.before = tmr
}
func (t *Transaction) SetAfter(tmr *Timer) {
t.after = tmr
}
func (t *Transaction) ToString() string {
ret := "txn:\n"
ret += " type: " + t.tp + "\n"
ret += " before: " + t.before.ToJsonString() + "\n"
ret += " after: " + t.after.ToJsonString() + "\n"
return ret
}
/*
* START Transaction
txn:
type: interval
before:
after: {"start":"20170111T223025Z","tags":["bcw","bcw-gotime","work"]}
*
*
* STOP Transaction
txn:
type: interval
before: {"start":"20170111T201826Z","tags":["bcw","bcw-gotime","work"]}
after:
txn:
type: interval
before:
after: {"start":"20170111T201826Z","end":"20170111T221747Z","tags":["bcw","bcw-gotime","work"]}
*
*
* TAG Transaction
txn:
type: interval
before: {"start":"20170112T123633Z","tags":["bcw","bcw-gotime","work"]}
after: {"start":"20170112T123633Z","tags":["bcw","bcw-gotime","test","work"]}
2017-01-11 23:45:04 +00:00
*/