1. 레포지토리 개요 부분 실행 결과 수정

결과1.png

결과2.png

⇒ 레포 개요 길이 수정 할 수 있으면

  1. DB migration 및 ERD 적용하기

(1) ERD

GitFolio ERD.png

⇒ commit table이 새로 만들어짐

⇒ 새로 적용 예정

최신 버전 (overview/models.py - 설계된 구현)

최신 버전에서는 더 복잡하고 자세한 모델 구조로 확장되었습니다:

python
복사
class Repository(models.Model):
    owner = models.CharField(max_length=100)
    name = models.CharField(max_length=100)
    description = models.TextField(blank=True, null=True)
    created_at = models.DateTimeField(auto_now_add=True)
    updated_at = models.DateTimeField(auto_now=True)

    class Meta:
        unique_together = ('owner', 'name')

    def __str__(self):
        return f"{self.owner}/{self.name}"

class Commit(models.Model):
    repository = models.ForeignKey(Repository, on_delete=models.CASCADE, related_name='commits')
    sha = models.CharField(max_length=40, unique=True)
    author = models.CharField(max_length=100)
    message = models.TextField()
    committed_date = models.DateTimeField()
    additions = models.IntegerField(default=0)
    deletions = models.IntegerField(default=0)
    changed_files = models.IntegerField(default=0)
    created_at = models.DateTimeField(auto_now_add=True)

    def __str__(self):
        return f"{self.sha[:7]} - {self.message[:50]}"

class CommitFile(models.Model):
    commit = models.ForeignKey(Commit, on_delete=models.CASCADE, related_name='files')
    filename = models.CharField(max_length=255)
    status = models.CharField(max_length=20)  # added, modified, removed
    additions = models.IntegerField(default=0)
    deletions = models.IntegerField(default=0)
    patch = models.TextField(blank=True, null=True)

    def __str__(self):
        return self.filename

class CommitAnalysis(models.Model):
    repository = models.ForeignKey(Repository, on_delete=models.CASCADE, related_name='analyses')
    username = models.CharField(max_length=100)
    commit_count = models.IntegerField(default=0)
    analysis_json = models.JSONField()
    created_at = models.DateTimeField(auto_now_add=True)

    class Meta:
        unique_together = ('repository', 'username')

    def __str__(self):
        return f"Analysis for {self.username} on {self.repository}"

주요 변경 사항

  1. 모델 구조 확장:
  2. User 모델 제거:
  3. 데이터 저장 방식:
  4. 관계 모델링: