RFC: GithubRepo is modeled incorrectly
@begedin がすでに取り組んでいます。
2017年11月16日 から。
評価
この issue はまだ評価されていません。
説明
Problem
#1080 added a unique index to the github_repos schema.
#1081 also changes behavior when syncing github repos to match by github_id
The model for a GithubRepo, however, looks like this (important bits only):
schema "github_repos" do
field :github_id, :integer
belongs_to :github_app_installation, CodeCorps.GithubAppInstallation
end
The problem here is, in a real world, a github repository is not uniquely identified by an installation, but by it's github_id, as we are aiming to change.
In our specific case, a belongs_to :github_app_installation simply tells us which installation provided us with the information about the repository.
I guess our initial goal was to model it so each installation stores it's own copy, even though, on github, it's the same record. With the addition of other records, this no longer works optimally.
However, with the way it all works, since in our model, a repo can only belong to a single installation, we will encounter A LOT of difficulties as we start dealing with multiple installations.
Proposed general solution
- remove the "belongs_to" relationship
- add a "link" table and change it to a many-to-many relationship
- not sure about naming
GithubAppInstallationGithubRepo,GithubInstallationRepo?GithubAppInstallationRepo,InstallationGithubRepo?GithubAppInstallationReposounds best to me.
- not sure about naming
Specific changes needed
In CodeCorps.GitHub.Event.Installation.Repos
- the
:delete_repos,:sync_repossteps are replaced with:ensure_repos- find or create al repositories:disassociate_repos- deleteGithubAppInstallationReporecords no longer in the installation:associate_repos- createGithubAppInstallationReporecords in the installation
- 主要言語
- Elixir
- スター
- 234
- フォーク
- 82
- PR マージ指標
- 30日以内にマージされた PR はありません
コントリビューションガイド
はじめの一歩
- issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
- 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
- リポジトリをフォークし、ブランチを切って変更します。
- issue 番号を参照したプルリクエストを送ります。
code-corps/code-corps-api のほかの issue
-
難易度 5/5 1週間以上 初心者へのやさしさ 15/100
code-corps/code-corps-api#1385 ·
-
難易度 3/5 1〜2日 初心者へのやさしさ 25/100
code-corps/code-corps-api#1384 ·
-
難易度 4/5 3〜5日 初心者へのやさしさ 35/100
code-corps/code-corps-api#1383 · コメント 2 件 ·
-
難易度 3/5 1〜2日 初心者へのやさしさ 35/100
code-corps/code-corps-api#1382 · コメント 2 件 ·
-
Difficulty: Medium Skill: Elixir Time: 4 hours
code-corps/code-corps-api#1372 · コメント 3 件 · 担当者 1 名 ·
code-corps/code-corps-api の issue をすべて見る
似ている issue
-
難易度 2/5 1〜3時間 初心者へのやさしさ 75/100
agentjido/jido_harness#80 ·
-
難易度 2/5 1〜3時間 初心者へのやさしさ 70/100
sevenseacat/cinder#235 ·
-
bug
難易度 2/5 1〜3時間 初心者へのやさしさ 85/100
-
難易度 2/5 1〜3時間 初心者へのやさしさ 84/100
phoenixframework/phoenix#6847 ·
-
bug
難易度 2/5 1〜3時間 初心者へのやさしさ 64/100