chore: rename transactions to sessions (#4753)

This commit is contained in:
andig 2022-10-07 20:09:19 +02:00 • committed by GitHub
parent 8deef47165
commit a252fc1475
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
6 changed files with 52 additions and 44 deletions

View file

@ -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)
}
}

View file

@ -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)

View file

@ -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() {

View file

@ -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
}

View file

@ -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)
}
}

View file

@ -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