diff --git a/lib/app/repository.ex b/lib/app/repository.ex index 7292236..d6355eb 100644 --- a/lib/app/repository.ex +++ b/lib/app/repository.ex @@ -25,10 +25,25 @@ defmodule App.Repository do @doc false def changeset(repository, attrs) do + attrs = %{attrs | topics: Enum.join(attrs.topics, ", ")} + repository - |> cast(attrs, [:id, :name, :full_name, :language, :owner_id, :description, - :fork, :forks_count, :watchers_count, :stargazers_count, :topics, - :open_issues_count, :created_at, :pushed_at]) + |> cast(attrs, [ + :created_at, + :id, + :description, + :fork, + :forks_count, + :full_name, + :language, + :name, + :open_issues_count, + :owner_id, + :pushed_at, + :stargazers_count, + :topics, + :watchers_count + ]) |> validate_required([:name, :full_name]) end @@ -47,7 +62,6 @@ defmodule App.Repository do def get_org_repos(org) do App.GitHub.org_repos(org) |> Enum.map(fn repo -> - dbg(repo) create(repo) end) end diff --git a/lib/app/user.ex b/lib/app/user.ex index 646f8cd..ab468cc 100644 --- a/lib/app/user.ex +++ b/lib/app/user.ex @@ -14,6 +14,7 @@ defmodule App.User do field :email, :string field :followers, :integer field :following, :integer + field :hex, :string field :hireable, :boolean, default: false field :location, :string field :login, :string @@ -27,7 +28,7 @@ defmodule App.User do @doc false def changeset(user, attrs) do user - |> cast(attrs, [:id, :login, :avatar_url, :name, :company, :bio, :blog, :location, :email, :created_at, :hireable, :two_factor_authentication, :public_repos, :followers, :following]) + |> cast(attrs, [:id, :login, :avatar_url, :name, :company, :bio, :blog, :location, :email, :created_at, :hex, :hireable, :two_factor_authentication, :public_repos, :followers, :following]) |> validate_required([:id, :login, :avatar_url]) end @@ -54,6 +55,7 @@ defmodule App.User do else {:ok, user} = map_github_user_fields_to_table(data) + |> Map.put(:hex, App.Img.get_avatar_color(data.avatar_url)) |> create() user @@ -108,7 +110,7 @@ defmodule App.User do def list_users_avatars do from(u in User, select: %{id: u.id}) # |> limit(20) - |> order_by(desc: :inserted_at) + |> order_by(:hex) # |> distinct(true) |> Repo.all() # return a list of urls not a list of maps diff --git a/priv/repo/migrations/20221005213110_create_users.exs b/priv/repo/migrations/20221005213110_create_users.exs index 49f362d..28a8464 100644 --- a/priv/repo/migrations/20221005213110_create_users.exs +++ b/priv/repo/migrations/20221005213110_create_users.exs @@ -12,6 +12,7 @@ defmodule App.Repo.Migrations.CreateUsers do add :followers, :integer add :following, :integer add :hireable, :boolean, default: false + add :hex, :string add :location, :string add :login, :string add :name, :string diff --git a/test/app/repository_test.exs b/test/app/repository_test.exs index fcf2ea1..9758770 100644 --- a/test/app/repository_test.exs +++ b/test/app/repository_test.exs @@ -15,8 +15,7 @@ defmodule App.RepositoryTest do open_issues_count: 98, pushed_at: "2022-08-10T07:41:05Z", stargazers_count: 1604, - topics: Enum.join(["beginner", "beginner-friendly", "how-to", "howto", "learn", - "starter-kit"], ","), + topics: ["beginner", "beginner-friendly", "how-to", "learn"], watchers_count: 1604 } assert {:ok, inserted_repo} = App.Repository.create(repo) @@ -24,7 +23,6 @@ defmodule App.RepositoryTest do end test "App.Repository.get_org_repos/1" do - App.Repository.get_org_repos("ideaq") # |> dbg # assert inserted_repo.name == repo.name end