Skip to content
This repository was archived by the owner on May 5, 2025. It is now read-only.
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
66 changes: 0 additions & 66 deletions database/models/reports.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,17 +3,14 @@
from decimal import Decimal
from functools import cached_property

from shared.reports.types import ReportTotals
from sqlalchemy import Column, ForeignKey, Table, UniqueConstraint, types
from sqlalchemy.dialects import postgresql
from sqlalchemy.dialects.postgresql import UUID
from sqlalchemy.orm import backref, relationship

from database.base import CodecovBaseModel, MixinBaseClass, MixinBaseClassNoExternalID
from database.models.core import Commit, CompareCommit, Repository
from database.utils import ArchiveField
from helpers.clock import get_utc_now
from helpers.config import should_write_data_to_storage_config_check
from helpers.number import precise_round

log = logging.getLogger(__name__)
Expand All @@ -38,13 +35,6 @@ class CommitReport(CodecovBaseModel, MixinBaseClass):
back_populates="reports_list",
cascade="all, delete",
)
details = relationship(
"ReportDetails",
back_populates="report",
uselist=False,
cascade="all, delete",
passive_deletes=True,
)
totals = relationship(
"ReportLevelTotals",
back_populates="report",
Expand Down Expand Up @@ -129,62 +119,6 @@ class UploadError(CodecovBaseModel, MixinBaseClass):
error_params = Column(postgresql.JSON, default=dict)


class ReportDetails(CodecovBaseModel, MixinBaseClass):
__tablename__ = "reports_reportdetails"
report_id = Column(types.BigInteger, ForeignKey("reports_commitreport.id"))
report: CommitReport = relationship(
"CommitReport", foreign_keys=[report_id], back_populates="details"
)
_files_array = Column("files_array", postgresql.ARRAY(postgresql.JSONB))
_files_array_storage_path = Column(
"files_array_storage_path", types.Text, nullable=True
)

def get_repository(self):
return self.report.commit.repository

def get_commitid(self):
return self.report.commit.commitid

def rehydrate_encoded_data(self, json_files_array):
"""This ensures that we always use the files_array with the correct underlying classes.
No matter where the data comes from.
"""
return [
{
**v,
"file_totals": ReportTotals(*(v.get("file_totals", []))),
"diff_totals": (
ReportTotals(*v["diff_totals"]) if v["diff_totals"] else None
),
}
for v in json_files_array
]

def _should_write_to_storage(self) -> bool:
# Safety check to see if the path to repository is valid
# Because we had issues around this before
if (
self.report is None
or self.report.commit is None
or self.report.commit.repository is None
or self.report.commit.repository.owner is None
):
return False
is_codecov_repo = self.report.commit.repository.owner.username == "codecov"
return should_write_data_to_storage_config_check(
"report_details_files_array",
is_codecov_repo,
self.report.commit.repository.repoid,
)

files_array = ArchiveField(
should_write_to_storage_fn=_should_write_to_storage,
rehydrate_fn=rehydrate_encoded_data,
default_value_class=list,
)


class AbstractTotals(MixinBaseClass):
branches = Column(types.Integer)
coverage = Column(types.Numeric(precision=8, scale=5))
Expand Down
8 changes: 0 additions & 8 deletions database/tests/factories/core.py
Original file line number Diff line number Diff line change
Expand Up @@ -212,14 +212,6 @@ class Meta:
files = 0


class ReportDetailsFactory(Factory):
class Meta:
model = models.ReportDetails

report = factory.SubFactory(ReportFactory)
_files_array = factory.LazyFunction(list)


class ReportResultsFactory(Factory):
class Meta:
model = models.ReportResults
Expand Down
Loading
Loading