@@ -13,10 +13,12 @@ defmodule Plausible.Funnels do
1313
1414 import Ecto.Query
1515
16- @ spec create ( Plausible.Site . t ( ) , String . t ( ) , [ map ( ) ] ) ::
16+ @ spec create ( Plausible.Site . t ( ) , String . t ( ) , [ map ( ) ] , Keyword . t ( ) ) ::
1717 { :ok , Funnel . t ( ) }
1818 | { :error , Ecto.Changeset . t ( ) | :invalid_funnel_size | :upgrade_required }
19- def create ( site , name , steps )
19+ def create ( site , name , steps , opts \\ [ ] )
20+
21+ def create ( site , name , steps , opts )
2022 when is_list ( steps ) and length ( steps ) in Funnel . min_steps ( ) .. Funnel . max_steps ( ) do
2123 site = Plausible.Repo . preload ( site , :team )
2224
@@ -26,19 +28,19 @@ defmodule Plausible.Funnels do
2628
2729 :ok ->
2830 site
29- |> create_changeset ( name , steps )
31+ |> create_changeset ( name , steps , opts )
3032 |> Repo . insert ( )
3133 end
3234 end
3335
34- def create ( _site , _name , _goals ) do
36+ def create ( _site , _name , _goals , _opts ) do
3537 { :error , :invalid_funnel_size }
3638 end
3739
38- @ spec update ( Funnel . t ( ) , String . t ( ) , [ map ( ) ] ) ::
40+ @ spec update ( Funnel . t ( ) , String . t ( ) , [ map ( ) ] , Keyword . t ( ) ) ::
3941 { :ok , Funnel . t ( ) }
4042 | { :error , Ecto.Changeset . t ( ) | :invalid_funnel_size | :upgrade_required }
41- def update ( funnel , name , steps ) do
43+ def update ( funnel , name , steps , opts \\ [ ] ) do
4244 site = Plausible.Repo . preload ( funnel , site: :team ) . site
4345
4446 case Plausible.Billing.Feature.Funnels . check_availability ( site . team ) do
@@ -47,27 +49,29 @@ defmodule Plausible.Funnels do
4749
4850 :ok ->
4951 funnel
50- |> Funnel . changeset ( % { name: name , steps: steps } )
52+ |> edit_changeset ( name , steps , opts )
5153 |> Repo . update ( )
5254 end
5355 end
5456
55- @ spec create_changeset ( Plausible.Site . t ( ) , String . t ( ) , [ map ( ) ] ) ::
57+ @ spec create_changeset ( Plausible.Site . t ( ) , String . t ( ) , [ map ( ) ] , Keyword . t ( ) ) ::
5658 Ecto.Changeset . t ( )
57- def create_changeset ( site , name , steps ) do
58- Funnel . changeset ( % Funnel { site_id: site . id } , % { name: name , steps: steps } )
59+ def create_changeset ( site , name , steps , opts \\ [ ] ) do
60+ open? = Keyword . get ( opts , :open? , false )
61+ Funnel . changeset ( % Funnel { site_id: site . id } , % { name: name , steps: steps , open: open? } )
5962 end
6063
61- @ spec edit_changeset ( Plausible.Funnel . t ( ) , String . t ( ) , [ map ( ) ] ) ::
64+ @ spec edit_changeset ( Plausible.Funnel . t ( ) , String . t ( ) , [ map ( ) ] , Keyword . t ( ) ) ::
6265 Ecto.Changeset . t ( )
63- def edit_changeset ( funnel , name , steps ) do
64- Funnel . changeset ( funnel , % { name: name , steps: steps } )
66+ def edit_changeset ( funnel , name , steps , opts \\ [ ] ) do
67+ open? = Keyword . get ( opts , :open? , false )
68+ Funnel . changeset ( funnel , % { name: name , steps: steps , open: open? } )
6569 end
6670
67- @ spec ephemeral_definition ( Plausible.Site . t ( ) , String . t ( ) , [ map ( ) ] ) :: Funnel . t ( )
68- def ephemeral_definition ( site , name , steps ) do
71+ @ spec ephemeral_definition ( Plausible.Site . t ( ) , String . t ( ) , [ map ( ) ] , Keyword . t ( ) ) :: Funnel . t ( )
72+ def ephemeral_definition ( site , name , steps , opts \\ [ ] ) do
6973 site
70- |> create_changeset ( name , steps )
74+ |> create_changeset ( name , steps , opts )
7175 |> Ecto.Changeset . apply_changes ( )
7276 end
7377
0 commit comments