fix: migrate remaining session.query() calls to SQLAlchemy 2.0 select() 🔧

This commit is contained in:
2026-02-19 23:38:31 +13:00
parent 8c1c2b4abc
commit d81ecd6bdd
2 changed files with 19 additions and 13 deletions

View File

@@ -1,6 +1,7 @@
import cherrypy import cherrypy
import json import json
from loguru import logger from loguru import logger
from sqlalchemy import select
from directdnsonly.app.db import connect from directdnsonly.app.db import connect
from directdnsonly.app.db.models import Domain from directdnsonly.app.db.models import Domain
@@ -30,12 +31,11 @@ class InternalAPI:
session = connect() session = connect()
try: try:
if domain: if domain:
record = ( record = session.execute(
session.query(Domain) select(Domain)
.filter_by(domain=domain) .filter_by(domain=domain)
.filter(Domain.zone_data.isnot(None)) .where(Domain.zone_data.isnot(None))
.first() ).scalar_one_or_none()
)
if not record: if not record:
cherrypy.response.status = 404 cherrypy.response.status = 404
return json.dumps({"error": "not found"}).encode() return json.dumps({"error": "not found"}).encode()
@@ -53,11 +53,9 @@ class InternalAPI:
} }
).encode() ).encode()
else: else:
records = ( records = session.execute(
session.query(Domain) select(Domain).where(Domain.zone_data.isnot(None))
.filter(Domain.zone_data.isnot(None)) ).scalars().all()
.all()
)
return json.dumps( return json.dumps(
[ [
{ {

View File

@@ -65,6 +65,7 @@ def test_start_skips_when_disabled(caplog):
def test_start_warns_when_no_peers(caplog): def test_start_warns_when_no_peers(caplog):
import logging import logging
worker = PeerSyncWorker({"enabled": True, "peers": []}) worker = PeerSyncWorker({"enabled": True, "peers": []})
with patch.object(worker, "_run"): with patch.object(worker, "_run"):
worker.start() worker.start()
@@ -131,7 +132,9 @@ def test_sync_creates_new_local_record(patch_connect, monkeypatch):
def test_sync_updates_older_local_record(patch_connect, monkeypatch): def test_sync_updates_older_local_record(patch_connect, monkeypatch):
"""When local zone_data is older than peer's, it is overwritten.""" """When local zone_data is older than peer's, it is overwritten."""
session = patch_connect session = patch_connect
session.add(Domain(domain="example.com", zone_data="old data", zone_updated_at=OLDER)) session.add(
Domain(domain="example.com", zone_data="old data", zone_updated_at=OLDER)
)
session.commit() session.commit()
worker = PeerSyncWorker(BASE_CONFIG) worker = PeerSyncWorker(BASE_CONFIG)
@@ -149,7 +152,10 @@ def test_sync_updates_older_local_record(patch_connect, monkeypatch):
worker._sync_from_peer(_make_peer()) worker._sync_from_peer(_make_peer())
record = session.query(Domain).filter_by(domain="example.com").first() from sqlalchemy import select
record = session.execute(
select(Domain).filter_by(domain="example.com")
).scalar_one_or_none()
assert record.zone_data == ZONE_DATA assert record.zone_data == ZONE_DATA
assert record.zone_updated_at == NOW assert record.zone_updated_at == NOW
@@ -157,7 +163,9 @@ def test_sync_updates_older_local_record(patch_connect, monkeypatch):
def test_sync_skips_when_local_is_newer(patch_connect, monkeypatch): def test_sync_skips_when_local_is_newer(patch_connect, monkeypatch):
"""When local zone_data is newer than peer's, it is not overwritten.""" """When local zone_data is newer than peer's, it is not overwritten."""
session = patch_connect session = patch_connect
session.add(Domain(domain="example.com", zone_data="newer local", zone_updated_at=NOW)) session.add(
Domain(domain="example.com", zone_data="newer local", zone_updated_at=NOW)
)
session.commit() session.commit()
worker = PeerSyncWorker(BASE_CONFIG) worker = PeerSyncWorker(BASE_CONFIG)