diff --git a/lib/algora/admin/admin.ex b/lib/algora/admin/admin.ex index 968f1b3de..8a94553aa 100644 --- a/lib/algora/admin/admin.ex +++ b/lib/algora/admin/admin.ex @@ -342,7 +342,10 @@ defmodule Algora.Admin do where: t.provider_id == ^to_string(installation["id"]) ), set: - [provider_meta: Util.normalize_struct(installation)] ++ + [ + provider_meta: Util.normalize_struct(installation), + repository_selection: installation["repository_selection"] + ] ++ if(target_user, do: [provider_user_id: target_user.id], else: []) ) diff --git a/lib/algora/admin/migration/migration.ex b/lib/algora/admin/migration/migration.ex index 988fd0c56..fe74f7d6d 100644 --- a/lib/algora/admin/migration/migration.ex +++ b/lib/algora/admin/migration/migration.ex @@ -710,7 +710,6 @@ defmodule Algora.Admin.Migration do "provider" => "github", "provider_id" => row["github_id"], "provider_meta" => nil, - "avatar_url" => nil, "repository_selection" => nil, "owner_id" => nil, "connected_user_id" => connected_user["id"], diff --git a/lib/algora/workspace/schemas/installation.ex b/lib/algora/workspace/schemas/installation.ex index ec164c0f2..0de288978 100644 --- a/lib/algora/workspace/schemas/installation.ex +++ b/lib/algora/workspace/schemas/installation.ex @@ -10,13 +10,13 @@ defmodule Algora.Workspace.Installation do field :provider, :string, null: false field :provider_id, :string, null: false field :provider_meta, :map - field :provider_user_id, :string - field :avatar_url, :string field :repository_selection, :string - belongs_to :owner, User, null: false + belongs_to :owner, User belongs_to :connected_user, User, null: false + # TODO: make non-nullable after migration + belongs_to :provider_user, User has_many :activities, {"installation_activities", Activity}, foreign_key: :assoc_id timestamps() @@ -26,7 +26,6 @@ defmodule Algora.Workspace.Installation do params = %{ owner_id: user.id, connected_user_id: org.id, - avatar_url: data["account"]["avatar_url"], repository_selection: data["repository_selection"], provider_id: to_string(data["id"]), provider_user_id: to_string(provider_user.id), @@ -37,7 +36,6 @@ defmodule Algora.Workspace.Installation do |> cast(params, [ :owner_id, :connected_user_id, - :avatar_url, :repository_selection, :provider_id, :provider_user_id, diff --git a/lib/algora/workspace/workspace.ex b/lib/algora/workspace/workspace.ex index 4eb3ae33b..231ee5b4e 100644 --- a/lib/algora/workspace/workspace.ex +++ b/lib/algora/workspace/workspace.ex @@ -286,10 +286,19 @@ defmodule Algora.Workspace do def get_installation(id), do: Repo.get(Installation, id) def get_installation!(id), do: Repo.get!(Installation, id) - def list_installations_by(fields), do: Repo.all(from(i in Installation, where: ^fields)) + def list_installations_by(fields), + do: + Repo.all( + from(i in Installation, + where: ^fields, + join: connected_user in assoc(i, :connected_user), + join: provider_user in assoc(i, :provider_user), + select_merge: %{connected_user: connected_user, provider_user: provider_user} + ) + ) def list_user_installations(user_id) do - Repo.all(from(i in Installation, where: i.owner_id == ^user_id, preload: [:connected_user])) + list_installations_by(owner_id: user_id) end def fetch_command_response(ticket_id, command_type) do diff --git a/lib/algora_web/live/org/dashboard_live.ex b/lib/algora_web/live/org/dashboard_live.ex index 29459dda4..33edb2c1c 100644 --- a/lib/algora_web/live/org/dashboard_live.ex +++ b/lib/algora_web/live/org/dashboard_live.ex @@ -244,32 +244,10 @@ defmodule AlgoraWeb.Org.DashboardLive do <.card_content> -
{installation.provider_meta["account"]["login"]}
-- Algora app is installed in - {installation.repository_selection} - repositories -
-{installation.provider_meta["account"]["login"]}
+{installation.provider_user.provider_login}
Algora app is installed in {installation.repository_selection} repositories diff --git a/lib/algora_web/live/user/installations_live.ex b/lib/algora_web/live/user/installations_live.ex index c8fb9adab..321ec8c70 100644 --- a/lib/algora_web/live/user/installations_live.ex +++ b/lib/algora_web/live/user/installations_live.ex @@ -19,14 +19,14 @@ defmodule AlgoraWeb.User.InstallationsLive do