Skip to content

Commit

Permalink
clean architecture (#19)
Browse files Browse the repository at this point in the history
  • Loading branch information
sylvek authored Jul 1, 2024
1 parent dbe931b commit 9f30b09
Show file tree
Hide file tree
Showing 5 changed files with 32 additions and 41 deletions.
21 changes: 18 additions & 3 deletions datastore/domotik/application.go
Original file line number Diff line number Diff line change
Expand Up @@ -27,17 +27,32 @@ func (a *Application) AddLog(l domain.Log) error {

func (a *Application) Process() error {
if a.input.HasIndice() {
newState, output := domain.GenerateStatistics(time.Now(), a.state, a.input)
t := time.Now()

if err := a.stateRepository.Store(newState); err != nil {
consumptionSinceLastTime, minutesSinceTheLastIndice := a.state.GetConsumptionSinceLastTime(t.Unix(), a.input.GetIndice())

a.state.ProcessNewDay(t)
a.state.ProcessNewHour(t)

a.state.IncHourlyConsumption(consumptionSinceLastTime)
a.state.IncDailyConsumption(consumptionSinceLastTime, a.input.IsLowTariff())

output := *domain.NewOutput(
a.state.DailySumLow,
a.state.DailySumHigh,
a.state.HourlySum,
a.state.HourlyNbIndices,
consumptionSinceLastTime,
minutesSinceTheLastIndice)

if err := a.stateRepository.Store(a.state); err != nil {
return err
}
if err := a.notificationRepository.Notify(output); err != nil {
return err
}

a.input.ResetIndice()
a.state = newState
}

return nil
Expand Down
8 changes: 8 additions & 0 deletions datastore/domotik/domain/input.entity.go
Original file line number Diff line number Diff line change
Expand Up @@ -25,3 +25,11 @@ func (i *Input) ResetIndice() {
func (i *Input) HasIndice() bool {
return i.indice > 0
}

func (i *Input) GetIndice() int64 {
return i.indice
}

func (i *Input) IsLowTariff() bool {
return i.lowTariff
}
12 changes: 6 additions & 6 deletions datastore/domotik/domain/output.entity.go
Original file line number Diff line number Diff line change
Expand Up @@ -8,21 +8,21 @@ type Output struct {
ratioLowTariffToday float64
}

func NewOutput(state State, consumptionSinceLastTime int64, minutesSinceTheLastIndice float64) *Output {
func NewOutput(dailySumLow int64, dailySumHigh int64, hourlySum int64, hourlyNbIndices int64, consumptionSinceLastTime int64, minutesSinceTheLastIndice float64) *Output {

HIGH_TARIFF_PRICE := 0.0001963
LOW_TARIFF_PRICE := 0.0001457

ratioLowTariffToday := 1.0
if state.DailySumHigh > 0 {
ratioLowTariffToday = float64(state.DailySumLow) / float64(state.DailySumHigh+state.DailySumLow)
if dailySumHigh > 0 {
ratioLowTariffToday = float64(dailySumLow) / float64(dailySumHigh+dailySumLow)
}

return &Output{
wattPerHourForLastMinute: float64(consumptionSinceLastTime) * 60 / minutesSinceTheLastIndice,
wattPerHourForThisHour: state.HourlySum * 60 / state.HourlyNbIndices,
wattConsumedToday: state.DailySumHigh + state.DailySumLow,
euroSpentToday: float64(state.DailySumHigh)*HIGH_TARIFF_PRICE + float64(state.DailySumLow)*LOW_TARIFF_PRICE,
wattPerHourForThisHour: hourlySum * 60 / hourlyNbIndices,
wattConsumedToday: dailySumHigh + dailySumLow,
euroSpentToday: float64(dailySumHigh)*HIGH_TARIFF_PRICE + float64(dailySumLow)*LOW_TARIFF_PRICE,
ratioLowTariffToday: ratioLowTariffToday,
}
}
Expand Down
12 changes: 0 additions & 12 deletions datastore/domotik/domain/state.entity.go
Original file line number Diff line number Diff line change
Expand Up @@ -25,18 +25,6 @@ func NewState() *State {
}
}

func CopyState(state State) *State {
return &State{
LastIndice: state.LastIndice,
CurrentDay: state.CurrentDay,
CurrentHour: state.CurrentHour,
DailySumHigh: state.DailySumHigh,
DailySumLow: state.DailySumLow,
HourlySum: state.HourlySum,
HourlyNbIndices: state.HourlyNbIndices,
}
}

func (s *State) GetConsumptionSinceLastTime(now int64, newIndice int64) (int64, float64) {
consumptionSinceLastTime := int64(0)
if s.LastIndice > 0 {
Expand Down
20 changes: 0 additions & 20 deletions datastore/domotik/domain/statistics.service.go

This file was deleted.

0 comments on commit 9f30b09

Please sign in to comment.