|
1 | | -from django.db import models |
2 | | -from django_prometheus.models import ExportModelOperationsMixin |
3 | | - |
4 | | -from codecov.models import BaseCodecovModel |
5 | | -from core.models import Commit |
6 | | -from reports.models import RepositoryFlag |
7 | | - |
8 | | - |
9 | | -class CommitComparison( |
10 | | - ExportModelOperationsMixin("compare.commit_comparison"), BaseCodecovModel |
11 | | -): |
12 | | - class CommitComparisonStates(models.TextChoices): |
13 | | - PENDING = "pending" |
14 | | - ERROR = "error" |
15 | | - PROCESSED = "processed" |
16 | | - |
17 | | - class CommitComparisonErrors(models.TextChoices): |
18 | | - MISSING_BASE_REPORT = "missing_base_report" |
19 | | - MISSING_HEAD_REPORT = "missing_head_report" |
20 | | - |
21 | | - base_commit = models.ForeignKey( |
22 | | - Commit, on_delete=models.CASCADE, related_name="base_commit_comparisons" |
23 | | - ) |
24 | | - compare_commit = models.ForeignKey( |
25 | | - Commit, on_delete=models.CASCADE, related_name="compare_commit_comparisons" |
26 | | - ) |
27 | | - state = models.TextField( |
28 | | - choices=CommitComparisonStates.choices, default=CommitComparisonStates.PENDING |
29 | | - ) |
30 | | - error = models.TextField(choices=CommitComparisonErrors.choices, null=True) |
31 | | - report_storage_path = models.CharField(max_length=150, null=True, blank=True) |
32 | | - patch_totals = models.JSONField(null=True) |
33 | | - |
34 | | - class Meta: |
35 | | - constraints = [ |
36 | | - models.UniqueConstraint( |
37 | | - name="unique_comparison_between_commit", |
38 | | - fields=["base_commit", "compare_commit"], |
39 | | - ) |
40 | | - ] |
41 | | - |
42 | | - @property |
43 | | - def is_processed(self): |
44 | | - return self.state == CommitComparison.CommitComparisonStates.PROCESSED |
45 | | - |
46 | | - |
47 | | -class FlagComparison( |
48 | | - ExportModelOperationsMixin("compare.flag_comparison"), BaseCodecovModel |
49 | | -): |
50 | | - commit_comparison = models.ForeignKey( |
51 | | - CommitComparison, on_delete=models.CASCADE, related_name="flag_comparisons" |
52 | | - ) |
53 | | - repositoryflag = models.ForeignKey( |
54 | | - RepositoryFlag, on_delete=models.CASCADE, related_name="flag_comparisons" |
55 | | - ) |
56 | | - head_totals = models.JSONField(null=True) |
57 | | - base_totals = models.JSONField(null=True) |
58 | | - patch_totals = models.JSONField(null=True) |
59 | | - |
60 | | - |
61 | | -class ComponentComparison( |
62 | | - ExportModelOperationsMixin("compare.component_comparison"), BaseCodecovModel |
63 | | -): |
64 | | - commit_comparison = models.ForeignKey( |
65 | | - CommitComparison, on_delete=models.CASCADE, related_name="component_comparisons" |
66 | | - ) |
67 | | - component_id = models.TextField(null=False, blank=False) |
68 | | - head_totals = models.JSONField(null=True) |
69 | | - base_totals = models.JSONField(null=True) |
70 | | - patch_totals = models.JSONField(null=True) |
71 | | - |
72 | | - class Meta: |
73 | | - indexes = [ |
74 | | - models.Index( |
75 | | - fields=["commit_comparison_id", "component_id"], |
76 | | - name="component_comparison_component", |
77 | | - ), |
78 | | - ] |
| 1 | +from shared.django_apps.compare.models import * |
0 commit comments