-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
- Loading branch information
There are no files selected for viewing
This file was deleted.
This file was deleted.
This file was deleted.
This file was deleted.
This file was deleted.
This file was deleted.
This file was deleted.
This file was deleted.
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,5 +1,7 @@ | ||
class Archive < ApplicationRecord | ||
self.table_name = "archive" | ||
|
||
scope :by_date, ->(date) { where(created_at: date.all_day).order(created_at: :asc) } | ||
delegate :hour, to: :datetime | ||
|
||
scope :by_date, ->(date) { where(datetime: date.all_day).order(datetime: :asc) } | ||
end |
This file was deleted.
This file was deleted.
This file was deleted.
This file was deleted.
This file was deleted.
This file was deleted.
This file was deleted.
This file was deleted.
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,35 @@ | ||
module Dailies | ||
class EnergyPriceExport < Daily | ||
self.table_name = "daily_energy_price_export" | ||
|
||
validates :max, presence: true, numericality: true | ||
validates :maxhour, presence: true, numericality: { | ||
only_integer: true, greater_than_or_equal_to: 0, less_than_or_equal_to: 23 | ||
} | ||
validates :min, presence: true, numericality: true | ||
validates :minhour, presence: true, numericality: { | ||
only_integer: true, greater_than_or_equal_to: 0, less_than_or_equal_to: 23 | ||
} | ||
validates :avg, presence: true, numericality: true | ||
|
||
def compute_max | ||
EnergyPrice.by_date(date).maximum(:export) | ||
end | ||
|
||
def compute_maxhour | ||
EnergyPrice.by_date(date).max_by(&:export).try(:datetime).try(:hour) | ||
end | ||
|
||
def compute_min | ||
EnergyPrice.by_date(date).minimum(:export) | ||
end | ||
|
||
def compute_minhour | ||
EnergyPrice.by_date(date).min_by(&:export).try(:datetime).try(:hour) | ||
end | ||
|
||
def compute_avg | ||
EnergyPrice.by_date(date).average(:export).try(:round, 4) | ||
end | ||
end | ||
end |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,35 @@ | ||
module Dailies | ||
class EnergyPriceImport < Daily | ||
self.table_name = "daily_energy_price_import" | ||
|
||
validates :max, presence: true, numericality: true | ||
validates :maxhour, presence: true, numericality: { | ||
only_integer: true, greater_than_or_equal_to: 0, less_than_or_equal_to: 23 | ||
} | ||
validates :min, presence: true, numericality: true | ||
validates :minhour, presence: true, numericality: { | ||
only_integer: true, greater_than_or_equal_to: 0, less_than_or_equal_to: 23 | ||
} | ||
validates :avg, presence: true, numericality: true | ||
|
||
def compute_max | ||
EnergyPrice.by_date(date).maximum(:import) | ||
end | ||
|
||
def compute_maxhour | ||
EnergyPrice.by_date(date).max_by(&:import).try(:datetime).try(:hour) | ||
end | ||
|
||
def compute_min | ||
EnergyPrice.by_date(date).minimum(:import) | ||
end | ||
|
||
def compute_minhour | ||
EnergyPrice.by_date(date).min_by(&:import).try(:datetime).try(:hour) | ||
end | ||
|
||
def compute_avg | ||
EnergyPrice.by_date(date).average(:import).try(:round, 4) | ||
end | ||
end | ||
end |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,24 @@ | ||
module Dailies | ||
class GridEnergyExport < Daily | ||
self.table_name = "daily_grid_energy_export" | ||
|
||
validates :max, presence: true, numericality: { greater_than_or_equal_to: 0 } | ||
validates :maxhour, presence: true, numericality: { | ||
only_integer: true, greater_than_or_equal_to: 0, less_than_or_equal_to: 23 | ||
} | ||
validates :sum, presence: true, numericality: { greater_than_or_equal_to: 0 } | ||
|
||
private | ||
|
||
def group_by_hour | ||
@group_by_hour ||= Archive.by_date(date).group_by(&:hour) | ||
end | ||
|
||
def sum_by_hour | ||
@sum_by_hour ||= group_by_hour.transform_values do |archives| | ||
archives.max_by(&:grid_energy_export).grid_energy_export - | ||
archives.min_by(&:grid_energy_export).grid_energy_export | ||
end | ||
end | ||
end | ||
end |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,15 @@ | ||
module Dailies | ||
class GridEnergyImport < Daily | ||
self.table_name = "daily_grid_energy_import" | ||
|
||
validates :max, presence: true, numericality: { greater_than_or_equal_to: 0 } | ||
validates :maxhour, presence: true, numericality: { | ||
only_integer: true, greater_than_or_equal_to: 0, less_than_or_equal_to: 23 | ||
} | ||
validates :min, presence: true, numericality: { greater_than_or_equal_to: 0 } | ||
validates :minhour, presence: true, numericality: { | ||
only_integer: true, greater_than_or_equal_to: 0, less_than_or_equal_to: 23 | ||
} | ||
validates :sum, presence: true, numericality: { greater_than_or_equal_to: 0 } | ||
end | ||
end |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,16 @@ | ||
module Dailies | ||
class GridPowerExport < Daily | ||
self.table_name = "daily_grid_power_export" | ||
|
||
validates :max, presence: true, numericality: { only_integer: true, greater_than_or_equal_to: 0 } | ||
validates :maxtime, presence: true | ||
|
||
def compute_max | ||
Archive.by_date(date).where("grid_power >= 0").maximum(:grid_power).try(:round, 2) || 0 | ||
end | ||
|
||
def compute_maxtime | ||
Archive.by_date(date).where("grid_power >= 0").max_by(&:grid_power).try(:datetime) | ||
end | ||
end | ||
end |