mirror of
https://github.com/wanderer-industries/wanderer
synced 2026-04-30 14:30:47 +00:00
50 lines
1.4 KiB
Elixir
50 lines
1.4 KiB
Elixir
defmodule WandererApp.Map.Audit do
|
|
@moduledoc """
|
|
Manager map subscription plans
|
|
|
|
This module now delegates to SecurityAudit for consistency.
|
|
It maintains backward compatibility while using the centralized audit system.
|
|
"""
|
|
|
|
require Ash.Query
|
|
require Logger
|
|
|
|
@week_seconds :timer.hours(24 * 7)
|
|
@month_seconds @week_seconds * 4
|
|
@audit_expired_seconds @month_seconds * 3
|
|
|
|
def track_map_subscription_event(event_type, metadata) do
|
|
mapped_type =
|
|
case event_type do
|
|
"subscription.created" -> :subscription_created
|
|
"subscription.updated" -> :subscription_updated
|
|
"subscription.deleted" -> :subscription_deleted
|
|
_ -> :subscription_unknown
|
|
end
|
|
|
|
track_map_event(mapped_type, metadata)
|
|
end
|
|
|
|
def archive() do
|
|
Logger.info("Start map audit arhiving...")
|
|
|
|
WandererApp.Api.UserActivity
|
|
|> Ash.Query.filter(inserted_at: [less_than: get_expired_at()])
|
|
|> Ash.bulk_destroy!(:archive, %{}, batch_size: 100)
|
|
|
|
Logger.info(fn -> "Audit arhived" end)
|
|
:ok
|
|
end
|
|
|
|
defdelegate get_map_activity_query(map_id, period, activity),
|
|
to: WandererApp.SecurityAudit
|
|
|
|
defdelegate track_acl_event(event_type, metadata),
|
|
to: WandererApp.SecurityAudit
|
|
|
|
defdelegate track_map_event(event_type, metadata),
|
|
to: WandererApp.SecurityAudit
|
|
|
|
defp get_expired_at(), do: DateTime.utc_now() |> DateTime.add(-@audit_expired_seconds, :second)
|
|
end
|