Compare commits

...

2 Commits

Author SHA1 Message Date
49ebbc34fa fix: do not update package status if it is unchanged
In order to prevent timestamp bumps, filter by status is added
2026-02-24 15:33:06 +02:00
e376f1307f docs: remove required flag from email.template_full option 2026-02-22 02:57:34 +02:00
3 changed files with 20 additions and 8 deletions

View File

@@ -292,6 +292,7 @@ class PackageOperations(Operations):
(:package_base, :status, :last_updated, :repository)
on conflict (package_base, repository) do update set
status = :status, last_updated = :last_updated
where status != :status
""",
{
"package_base": package_base,

View File

@@ -131,7 +131,6 @@ class ReportTrigger(Trigger):
"template_full": {
"type": "string",
"dependencies": ["templates"],
"required": True,
"empty": False,
},
"templates": {

View File

@@ -157,8 +157,7 @@ def test_package_update_get(database: SQLite, package_ahriman: Package) -> None:
database.package_update(package_ahriman)
database.status_update(package_ahriman.base, status)
assert next((db_package, db_status)
for db_package, db_status in database.packages_get()
if db_package.base == package_ahriman.base) == (package_ahriman, status)
for db_package, db_status in database.packages_get()) == (package_ahriman, status)
def test_package_update_remove_get(database: SQLite, package_ahriman: Package) -> None:
@@ -176,10 +175,10 @@ def test_package_update_update(database: SQLite, package_ahriman: Package) -> No
"""
database.package_update(package_ahriman)
package_ahriman.version = "1.0.0"
database.package_update(package_ahriman)
assert next(db_package.version
for db_package, _ in database.packages_get()
if db_package.base == package_ahriman.base) == package_ahriman.version
for db_package, _ in database.packages_get()) == package_ahriman.version
def test_status_update(database: SQLite, package_ahriman: Package) -> None:
@@ -188,6 +187,19 @@ def test_status_update(database: SQLite, package_ahriman: Package) -> None:
"""
status = BuildStatus()
database.package_update(package_ahriman, database._repository_id)
database.status_update(package_ahriman.base, status, database._repository_id)
assert database.packages_get(database._repository_id) == [(package_ahriman, status)]
database.package_update(package_ahriman)
database.status_update(package_ahriman.base, status)
assert database.packages_get() == [(package_ahriman, status)]
def test_status_update_skip_same_status(database: SQLite, package_ahriman: Package) -> None:
"""
must preserve original timestamp when status is unchanged
"""
status = BuildStatus(timestamp=42)
database.package_update(package_ahriman)
database.status_update(package_ahriman.base, status)
database.status_update(package_ahriman.base, BuildStatus())
assert next(db_status.timestamp
for _, db_status in database.packages_get()) == status.timestamp