fix subscriptions
This commit is contained in:
@@ -193,23 +193,49 @@ apply_updates(Sub, Updates) ->
|
||||
<<"expired">> -> expired;
|
||||
Other -> Other
|
||||
end,
|
||||
Acc#subscription{status = NewStatus, updated_at = calendar:universal_time()};
|
||||
Acc#subscription{status = NewStatus,
|
||||
updated_at = calendar:universal_time()};
|
||||
<<"plan">> ->
|
||||
NewPlan = case Value of
|
||||
<<"monthly">> -> monthly;
|
||||
<<"yearly">> -> yearly;
|
||||
<<"quarterly">>-> quarterly;
|
||||
<<"biannual">> -> biannual;
|
||||
<<"annual">> -> annual;
|
||||
Other -> Other
|
||||
<<"monthly">> -> monthly;
|
||||
<<"yearly">> -> yearly;
|
||||
<<"quarterly">> -> quarterly;
|
||||
<<"biannual">> -> biannual;
|
||||
<<"annual">> -> annual;
|
||||
Other -> Other
|
||||
end,
|
||||
Acc#subscription{plan = NewPlan, updated_at = calendar:universal_time()};
|
||||
Acc#subscription{plan = NewPlan,
|
||||
updated_at = calendar:universal_time()};
|
||||
<<"trial_used">> ->
|
||||
Acc#subscription{trial_used = Value, updated_at = calendar:universal_time()};
|
||||
Acc#subscription{trial_used = Value,
|
||||
updated_at = calendar:universal_time()};
|
||||
<<"expires_at">> ->
|
||||
Acc#subscription{expires_at = Value, updated_at = calendar:universal_time()};
|
||||
_ -> Acc
|
||||
Acc#subscription{expires_at = parse_iso_datetime(Value),
|
||||
updated_at = calendar:universal_time()};
|
||||
<<"started_at">> ->
|
||||
Acc#subscription{started_at = parse_iso_datetime(Value),
|
||||
updated_at = calendar:universal_time()};
|
||||
_ ->
|
||||
Acc
|
||||
end
|
||||
end, Sub, maps:to_list(Updates)).
|
||||
end, Sub, maps:to_list(Updates)).
|
||||
|
||||
parse_iso_datetime(Bin) when is_binary(Bin) ->
|
||||
try
|
||||
[DateStr, TimeStr] = string:split(Bin, "T"),
|
||||
TimeStrNoZ = string:trim(TimeStr, trailing, "Z"),
|
||||
[YearStr, MonthStr, DayStr] = string:split(DateStr, "-", all),
|
||||
[HourStr, MinuteStr, SecondStr] = string:split(TimeStrNoZ, ":", all),
|
||||
Year = binary_to_integer(list_to_binary(YearStr)),
|
||||
Month = binary_to_integer(list_to_binary(MonthStr)),
|
||||
Day = binary_to_integer(list_to_binary(DayStr)),
|
||||
Hour = binary_to_integer(list_to_binary(HourStr)),
|
||||
Minute = binary_to_integer(list_to_binary(MinuteStr)),
|
||||
Second = binary_to_integer(list_to_binary(SecondStr)),
|
||||
{{Year, Month, Day}, {Hour, Minute, Second}}
|
||||
catch
|
||||
_:_ -> Bin % если не получилось разобрать, оставляем как есть
|
||||
end;
|
||||
parse_iso_datetime(Other) -> Other.
|
||||
|
||||
count_subscription() -> mnesia:table_info(subscription, size).
|
||||
Reference in New Issue
Block a user