mirror of
https://github.com/teslamate-org/teslamate.git
synced 2026-01-24 21:06:08 +08:00
46 lines
1.0 KiB
Elixir
46 lines
1.0 KiB
Elixir
defmodule TeslaMate.Repo.Migrations.OptimizeConversionHelpers do
|
|
use Ecto.Migration
|
|
|
|
def change do
|
|
execute("DROP FUNCTION IF EXISTS public.convert_km(double precision, text);", &noop/0)
|
|
|
|
execute(
|
|
"""
|
|
CREATE OR REPLACE FUNCTION public.convert_km(n numeric(6,2), unit text)
|
|
RETURNS numeric(6,2)
|
|
LANGUAGE 'sql'
|
|
COST 100
|
|
VOLATILE
|
|
AS $BODY$
|
|
SELECT
|
|
CASE $2 WHEN 'km' THEN $1
|
|
WHEN 'mi' THEN $1 / 1.60934
|
|
END;
|
|
$BODY$;
|
|
""",
|
|
&noop/0
|
|
)
|
|
|
|
execute("DROP FUNCTION IF EXISTS public.convert_celsius(double precision, text);", &noop/0)
|
|
|
|
execute(
|
|
"""
|
|
CREATE OR REPLACE FUNCTION public.convert_celsius(n numeric(4,1), unit text)
|
|
RETURNS numeric(4,1)
|
|
LANGUAGE 'sql'
|
|
COST 100
|
|
VOLATILE
|
|
AS $BODY$
|
|
SELECT
|
|
CASE $2 WHEN 'C' THEN $1
|
|
WHEN 'F' THEN ($1 * 9 / 5) + 32
|
|
END;
|
|
$BODY$;
|
|
""",
|
|
&noop/0
|
|
)
|
|
end
|
|
|
|
defp noop, do: :ok
|
|
end
|