defmodule ExTeal.Metric.TrendExpressionFactory do
@moduledoc """
Factory for selecting the implementation to generate a date factory
based on the specific database adapter (and database).
"""
alias ExTeal.Metric.PostgresTrendExpression
@doc """
Based on the adapter, select a trend factory and build
a date expression to be used in a Ecto Query fragment for the query
"""
def make(query, metric, timezone, unit, start_dt) do
case metric.repo().__adapter__ do
Ecto.Adapters.Postgres ->
PostgresTrendExpression.generate(query, metric, timezone, unit, start_dt)
adapter ->
raise ArgumentError, message: "Adapter #{adapter} does not support trend metrics"
end
end
end