RFC: GithubRepo is modeled incorrectly
@begedin já está trabalhando nisso.
Desde 16/11/2017.
Avaliação
Esta issue ainda não foi avaliada.
Descrição
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
- Linguagem predominante
- Elixir
- Estrelas
- 234
- Forks
- 82
- Métricas de merge de PRs
- Nenhum PR com merge em 30d
Guia de contribuição
Primeiros passos
- Leia a issue inteira e depois o guia de contribuição do projeto.
- Comente na issue dizendo que vai assumir — evita que duas pessoas façam o mesmo trabalho.
- Faça um fork do repositório e trabalhe em uma branch.
- Abra um pull request que referencie o número da issue.
Mais de code-corps/code-corps-api
-
Dificuldade 5/5 Mais de uma semana Facilidade para iniciantes 15/100
code-corps/code-corps-api#1385 ·
-
Cannot Create new GitHub App Aberta
Dificuldade 3/5 1-2 dias Facilidade para iniciantes 25/100
code-corps/code-corps-api#1384 ·
-
Dificuldade 4/5 3-5 dias Facilidade para iniciantes 35/100
code-corps/code-corps-api#1383 · 2 comentários ·
-
Dificuldade 3/5 1-2 dias Facilidade para iniciantes 35/100
code-corps/code-corps-api#1382 · 2 comentários ·
-
Difficulty: Medium Skill: Elixir Time: 4 hours
code-corps/code-corps-api#1372 · 3 comentários · 1 responsável ·
Todas as issues de code-corps/code-corps-api
Issues semelhantes
-
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 75/100
agentjido/jido_harness#80 ·
-
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 70/100
sevenseacat/cinder#235 ·
-
bug
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 85/100
-
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 84/100
phoenixframework/phoenix#6847 ·
-
bug
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 64/100