cover/Elixir.DaProductApp.SaasKit.Subscriptions.html

1 defmodule DaProductApp.SaasKit.Subscriptions do
2 @moduledoc """
3 Module for handling subscription management through SaaS Kit.
4 """
5
6 alias DaProductApp.SaasKit.Client
7
8 @doc """
9 Create a new subscription for a user
10 """
11
:-(
def create_subscription(user_id, plan_id, params \\ %{}) do
12
:-(
body = %{
13 user_id: user_id,
14 plan_id: plan_id
15 }
16 |> Map.merge(params)
17
18
:-(
Client.post("/subscriptions", body)
19 end
20
21 @doc """
22 Get a subscription by ID
23 """
24 def get_subscription(subscription_id) do
25
:-(
Client.get("/subscriptions/#{subscription_id}")
26 end
27
28 @doc """
29 List all subscriptions for a user
30 """
31 def list_user_subscriptions(user_id) do
32
:-(
Client.get("/subscriptions", %{user_id: user_id})
33 end
34
35 @doc """
36 Update a subscription
37 """
38 def update_subscription(subscription_id, params) do
39
:-(
Client.put("/subscriptions/#{subscription_id}", params)
40 end
41
42 @doc """
43 Cancel a subscription
44 """
45
:-(
def cancel_subscription(subscription_id, params \\ %{}) do
46
:-(
Client.post("/subscriptions/#{subscription_id}/cancel", params)
47 end
48
49 @doc """
50 Resume a cancelled subscription
51 """
52 def resume_subscription(subscription_id) do
53
:-(
Client.post("/subscriptions/#{subscription_id}/resume", %{})
54 end
55
56 @doc """
57 Get subscription usage data
58 """
59 def get_subscription_usage(subscription_id) do
60
:-(
Client.get("/subscriptions/#{subscription_id}/usage")
61 end
62
63 @doc """
64 List available subscription plans
65 """
66 def list_plans do
67
:-(
Client.get("/plans")
68 end
69
70 @doc """
71 Get a specific plan by ID
72 """
73 def get_plan(plan_id) do
74
:-(
Client.get("/plans/#{plan_id}")
75 end
76 end
Line Hits Source