You've already forked directdnsonly
fix: migrate remaining session.query() calls to SQLAlchemy 2.0 select() 🔧
This commit is contained in:
@@ -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(
|
||||||
[
|
[
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -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)
|
||||||
|
|||||||
Reference in New Issue
Block a user