@@ -6,31 +6,45 @@ defmodule Algora.Workspace.Repository do
66
77 @ derive { Inspect , except: [ :provider_meta ] }
88 typed_schema "repositories" do
9- field :provider , :string
10- field :provider_id , :string
11- field :provider_meta , :map
9+ field :provider , :string , null: false
10+ field :provider_id , :string , null: false
11+ field :provider_meta , :map , null: false
1212
13- field :name , :string
14- field :url , :string
13+ field :name , :string , null: false
14+ field :url , :string , null: false
15+ field :description , :string
16+ field :og_image_url , :string , null: false
17+ field :og_image_updated_at , :utc_datetime_usec
1518
1619 has_many :tickets , Algora.Workspace.Ticket
17- belongs_to :user , Algora.Accounts.User
20+ belongs_to :user , Algora.Accounts.User , null: false
1821
1922 timestamps ( )
2023 end
2124
25+ defp og_image_base_url , do: "https://opengraph.githubassets.com"
26+
27+ def has_default_og_image? ( % Repository { } = repository ) ,
28+ do: String . starts_with? ( repository . og_image_url , og_image_base_url ( ) )
29+
30+ def default_og_image_url ( repo_owner , repo_name ) , do: "#{ og_image_base_url ( ) } /0/#{ repo_owner } /#{ repo_name } "
31+
2232 def github_changeset ( meta , user ) do
2333 params = % {
2434 provider_id: to_string ( meta [ "id" ] ) ,
2535 name: meta [ "name" ] ,
36+ description: meta [ "description" ] ,
37+ og_image_url: default_og_image_url ( meta [ "owner" ] [ "login" ] , meta [ "name" ] ) ,
38+ og_image_updated_at: DateTime . utc_now ( ) ,
2639 url: meta [ "html_url" ] ,
2740 user_id: user . id
2841 }
2942
3043 % Repository { provider: "github" , provider_meta: meta }
31- |> cast ( params , [ :provider_id , :name , :url , :user_id ] )
44+ |> cast ( params , [ :provider_id , :name , :url , :description , :og_image_url , :og_image_updated_at , : user_id] )
3245 |> generate_id ( )
3346 |> validate_required ( [ :provider_id , :name , :url , :user_id ] )
47+ |> foreign_key_constraint ( :user_id )
3448 |> unique_constraint ( [ :provider , :provider_id ] )
3549 end
3650end
0 commit comments