chore: rename transactions to sessions (#4753)
This commit is contained in:
parent
8deef47165
commit
a252fc1475
6 changed files with 52 additions and 44 deletions
|
|
@ -16,8 +16,8 @@ type DB struct {
|
|||
}
|
||||
|
||||
type Database interface {
|
||||
Txn(startEnergy float64) *Transaction
|
||||
Persist(txn interface{})
|
||||
Session(startEnergy float64) *Session
|
||||
Persist(session interface{})
|
||||
}
|
||||
|
||||
// New creates a database storage driver
|
||||
|
|
@ -31,9 +31,9 @@ func New(name string) (*DB, error) {
|
|||
return db, nil
|
||||
}
|
||||
|
||||
// Txn creates a charging transaction
|
||||
func (s *DB) Txn(meter float64) *Transaction {
|
||||
t := Transaction{
|
||||
// Session creates a charging session
|
||||
func (s *DB) Session(meter float64) *Session {
|
||||
t := Session{
|
||||
Loadpoint: s.name,
|
||||
Created: time.Now(),
|
||||
MeterStart: meter,
|
||||
|
|
@ -43,10 +43,10 @@ func (s *DB) Txn(meter float64) *Transaction {
|
|||
}
|
||||
|
||||
// Persist creates or updates a transaction in the database
|
||||
func (s *DB) Persist(txn interface{}) {
|
||||
s.log.TRACE.Printf("store: %+v", txn)
|
||||
func (s *DB) Persist(session interface{}) {
|
||||
s.log.TRACE.Printf("store: %+v", session)
|
||||
|
||||
if err := s.db.Save(txn).Error; err != nil {
|
||||
if err := s.db.Save(session).Error; err != nil {
|
||||
s.log.ERROR.Printf("store: %v", err)
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -11,8 +11,8 @@ import (
|
|||
"github.com/fatih/structs"
|
||||
)
|
||||
|
||||
// Transaction is a single charging transaction
|
||||
type Transaction struct {
|
||||
// Session is a single charging session
|
||||
type Session struct {
|
||||
ID uint `json:"-" csv:"-" gorm:"primarykey"`
|
||||
Created time.Time `json:"created"`
|
||||
Finished time.Time `json:"finished"`
|
||||
|
|
@ -25,20 +25,20 @@ type Transaction struct {
|
|||
}
|
||||
|
||||
// Stop stops charging session with end meter reading and due total amount
|
||||
func (t *Transaction) Stop(chargedWh, total float64) {
|
||||
func (t *Session) Stop(chargedWh, total float64) {
|
||||
t.ChargedEnergy = chargedWh / 1e3
|
||||
t.MeterStop = total
|
||||
t.Finished = time.Now()
|
||||
}
|
||||
|
||||
// Transactions is a list of transactions
|
||||
type Transactions []Transaction
|
||||
// Sessions is a list of sessions
|
||||
type Sessions []Session
|
||||
|
||||
var _ api.CsvWriter = (*Transactions)(nil)
|
||||
var _ api.CsvWriter = (*Sessions)(nil)
|
||||
|
||||
func (t *Transactions) writeHeader(ww *csv.Writer) {
|
||||
func (t *Sessions) writeHeader(ww *csv.Writer) {
|
||||
var row []string
|
||||
for _, f := range structs.Fields(Transaction{}) {
|
||||
for _, f := range structs.Fields(Session{}) {
|
||||
caption := f.Tag("csv")
|
||||
switch {
|
||||
case caption == "-":
|
||||
|
|
@ -52,7 +52,7 @@ func (t *Transactions) writeHeader(ww *csv.Writer) {
|
|||
_ = ww.Write(row)
|
||||
}
|
||||
|
||||
func (t *Transactions) writeRow(ww *csv.Writer, r Transaction) {
|
||||
func (t *Sessions) writeRow(ww *csv.Writer, r Session) {
|
||||
var row []string
|
||||
for _, f := range structs.Fields(r) {
|
||||
if f.Tag("csv") == "-" {
|
||||
|
|
@ -79,7 +79,7 @@ func (t *Transactions) writeRow(ww *csv.Writer, r Transaction) {
|
|||
}
|
||||
|
||||
// WriteCsv implements the api.CsvWriter interface
|
||||
func (t *Transactions) WriteCsv(w io.Writer) {
|
||||
func (t *Sessions) WriteCsv(w io.Writer) {
|
||||
ww := csv.NewWriter(w)
|
||||
t.writeHeader(ww)
|
||||
|
||||
|
|
@ -160,8 +160,8 @@ type LoadPoint struct {
|
|||
progress *Progress // Step-wise progress indicator
|
||||
|
||||
// session log
|
||||
db db.Database
|
||||
txn *db.Transaction
|
||||
db db.Database
|
||||
session *db.Session
|
||||
|
||||
tasks queues.Queue // tasks to be executed
|
||||
}
|
||||
|
|
@ -388,7 +388,7 @@ func (lp *LoadPoint) evChargeStartHandler() {
|
|||
// soc update reset
|
||||
lp.socUpdated = time.Time{}
|
||||
|
||||
lp.startTxn()
|
||||
lp.startSession()
|
||||
}
|
||||
|
||||
// evChargeStopHandler sends external stop event
|
||||
|
|
@ -405,7 +405,7 @@ func (lp *LoadPoint) evChargeStopHandler() {
|
|||
lp.resetPVTimerIfRunning()
|
||||
}
|
||||
|
||||
lp.stopTxn()
|
||||
lp.stopSession()
|
||||
}
|
||||
|
||||
// evVehicleConnectHandler sends external start event
|
||||
|
|
@ -472,7 +472,7 @@ func (lp *LoadPoint) evVehicleDisconnectHandler() {
|
|||
// reset timer when vehicle is removed
|
||||
lp.socTimer.Reset()
|
||||
|
||||
lp.finalizeTxn()
|
||||
lp.finalizeSession()
|
||||
}
|
||||
|
||||
// evVehicleSoCProgressHandler sends external start event
|
||||
|
|
@ -903,7 +903,7 @@ func (lp *LoadPoint) setActiveVehicle(vehicle api.Vehicle) {
|
|||
lp.Lock()
|
||||
|
||||
lp.unpublishVehicle()
|
||||
lp.updateTxn()
|
||||
lp.updateSession()
|
||||
}
|
||||
|
||||
func (lp *LoadPoint) wakeUpVehicle() {
|
||||
|
|
|
|||
|
|
@ -19,43 +19,43 @@ func (lp *LoadPoint) chargeMeterTotal() float64 {
|
|||
return f
|
||||
}
|
||||
|
||||
func (lp *LoadPoint) startTxn() {
|
||||
func (lp *LoadPoint) startSession() {
|
||||
// test guard
|
||||
if lp.db == nil {
|
||||
return
|
||||
}
|
||||
|
||||
if lp.txn == nil {
|
||||
lp.txn = lp.db.Txn(lp.chargeMeterTotal())
|
||||
if lp.session == nil {
|
||||
lp.session = lp.db.Session(lp.chargeMeterTotal())
|
||||
|
||||
if lp.vehicle != nil {
|
||||
lp.txn.Vehicle = lp.vehicle.Title()
|
||||
lp.session.Vehicle = lp.vehicle.Title()
|
||||
}
|
||||
|
||||
if c, ok := lp.charger.(api.Identifier); ok {
|
||||
if id, err := c.Identify(); err == nil {
|
||||
lp.txn.Identifier = id
|
||||
lp.session.Identifier = id
|
||||
}
|
||||
}
|
||||
|
||||
lp.db.Persist(lp.txn)
|
||||
lp.db.Persist(lp.session)
|
||||
}
|
||||
}
|
||||
|
||||
func (lp *LoadPoint) stopTxn() {
|
||||
func (lp *LoadPoint) stopSession() {
|
||||
// test guard
|
||||
if lp.db == nil || lp.txn == nil {
|
||||
if lp.db == nil || lp.session == nil {
|
||||
return
|
||||
}
|
||||
|
||||
lp.txn.Stop(lp.chargedEnergy, lp.chargeMeterTotal())
|
||||
lp.session.Stop(lp.chargedEnergy, lp.chargeMeterTotal())
|
||||
|
||||
lp.db.Persist(lp.txn)
|
||||
lp.db.Persist(lp.session)
|
||||
}
|
||||
|
||||
func (lp *LoadPoint) updateTxn() {
|
||||
func (lp *LoadPoint) updateSession() {
|
||||
// test guard
|
||||
if lp.db == nil || lp.txn == nil {
|
||||
if lp.db == nil || lp.session == nil {
|
||||
return
|
||||
}
|
||||
|
||||
|
|
@ -64,17 +64,17 @@ func (lp *LoadPoint) updateTxn() {
|
|||
title = lp.vehicle.Title()
|
||||
}
|
||||
|
||||
if lp.txn.Vehicle != title {
|
||||
lp.txn.Vehicle = title
|
||||
lp.db.Persist(lp.txn)
|
||||
if lp.session.Vehicle != title {
|
||||
lp.session.Vehicle = title
|
||||
lp.db.Persist(lp.session)
|
||||
}
|
||||
}
|
||||
|
||||
func (lp *LoadPoint) finalizeTxn() {
|
||||
func (lp *LoadPoint) finalizeSession() {
|
||||
// test guard
|
||||
if lp.db == nil {
|
||||
return
|
||||
}
|
||||
|
||||
lp.txn = nil
|
||||
lp.session = nil
|
||||
}
|
||||
|
|
|
|||
12
core/site.go
12
core/site.go
|
|
@ -94,7 +94,15 @@ func NewSiteFromConfig(
|
|||
|
||||
// migrate session log
|
||||
if serverdb.Instance != nil {
|
||||
if err := serverdb.Instance.AutoMigrate(new(db.Transaction)); err != nil {
|
||||
var err error
|
||||
// TODO deprecate
|
||||
if table := "transactions"; serverdb.Instance.Migrator().HasTable(table) {
|
||||
err = serverdb.Instance.Migrator().RenameTable(table, new(db.Session))
|
||||
}
|
||||
if err == nil {
|
||||
err = serverdb.Instance.AutoMigrate(new(db.Session))
|
||||
}
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
}
|
||||
|
|
@ -109,7 +117,7 @@ func NewSiteFromConfig(
|
|||
return nil, err
|
||||
}
|
||||
|
||||
shutdown.Register(lp.stopTxn)
|
||||
shutdown.Register(lp.stopSession)
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -155,7 +155,7 @@ func sessionHandler(w http.ResponseWriter, r *http.Request) {
|
|||
return
|
||||
}
|
||||
|
||||
var res db.Transactions
|
||||
var res db.Sessions
|
||||
if txn := dbserver.Instance.Where("charged_kwh>=0.05").Order("created desc").Find(&res); txn.Error != nil {
|
||||
jsonError(w, http.StatusInternalServerError, txn.Error)
|
||||
return
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue