mirror of
https://github.com/RichieCahill/dotfiles.git
synced 2026-04-17 13:08:19 -04:00
converted session.execute(select to session.scalars(select
This commit is contained in:
@@ -180,10 +180,7 @@ def _split_name(display_name: str) -> tuple[str, str]:
|
|||||||
def ingest_bills(engine: Engine, congress_dirs: list[Path]) -> None:
|
def ingest_bills(engine: Engine, congress_dirs: list[Path]) -> None:
|
||||||
"""Load bill data.json files."""
|
"""Load bill data.json files."""
|
||||||
with Session(engine) as session:
|
with Session(engine) as session:
|
||||||
existing_bills = {
|
existing_bills = {(bill.congress, bill.bill_type, bill.number) for bill in session.scalars(select(Bill)).all()}
|
||||||
(row.congress, row.bill_type, row.number)
|
|
||||||
for row in session.execute(select(Bill.congress, Bill.bill_type, Bill.number)).all()
|
|
||||||
}
|
|
||||||
logger.info("Found %d existing bills in DB", len(existing_bills))
|
logger.info("Found %d existing bills in DB", len(existing_bills))
|
||||||
|
|
||||||
total_inserted = 0
|
total_inserted = 0
|
||||||
@@ -251,8 +248,7 @@ def ingest_votes(engine: Engine, congress_dirs: list[Path]) -> None:
|
|||||||
bill_map = _build_bill_map(session)
|
bill_map = _build_bill_map(session)
|
||||||
logger.info("Loaded %d bills into lookup map", len(bill_map))
|
logger.info("Loaded %d bills into lookup map", len(bill_map))
|
||||||
existing_votes = {
|
existing_votes = {
|
||||||
(row.congress, row.chamber, row.session, row.number)
|
(vote.congress, vote.chamber, vote.session, vote.number) for vote in session.scalars(select(Vote)).all()
|
||||||
for row in session.execute(select(Vote.congress, Vote.chamber, Vote.session, Vote.number)).all()
|
|
||||||
}
|
}
|
||||||
logger.info("Found %d existing votes in DB", len(existing_votes))
|
logger.info("Found %d existing votes in DB", len(existing_votes))
|
||||||
|
|
||||||
@@ -279,15 +275,12 @@ def ingest_votes(engine: Engine, congress_dirs: list[Path]) -> None:
|
|||||||
|
|
||||||
def _build_legislator_map(session: Session) -> dict[str, int]:
|
def _build_legislator_map(session: Session) -> dict[str, int]:
|
||||||
"""Build a mapping of bioguide_id -> legislator.id."""
|
"""Build a mapping of bioguide_id -> legislator.id."""
|
||||||
return {row.bioguide_id: row.id for row in session.execute(select(Legislator.bioguide_id, Legislator.id)).all()}
|
return {legislator.bioguide_id: legislator.id for legislator in session.scalars(select(Legislator)).all()}
|
||||||
|
|
||||||
|
|
||||||
def _build_bill_map(session: Session) -> dict[tuple[int, str, int], int]:
|
def _build_bill_map(session: Session) -> dict[tuple[int, str, int], int]:
|
||||||
"""Build a mapping of (congress, bill_type, number) -> bill.id."""
|
"""Build a mapping of (congress, bill_type, number) -> bill.id."""
|
||||||
return {
|
return {(bill.congress, bill.bill_type, bill.number): bill.id for bill in session.scalars(select(Bill)).all()}
|
||||||
(row.congress, row.bill_type, row.number): row.id
|
|
||||||
for row in session.execute(select(Bill.congress, Bill.bill_type, Bill.number, Bill.id)).all()
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
def _parse_vote(
|
def _parse_vote(
|
||||||
@@ -406,8 +399,7 @@ def ingest_bill_text(engine: Engine, congress_dirs: list[Path]) -> None:
|
|||||||
bill_map = _build_bill_map(session)
|
bill_map = _build_bill_map(session)
|
||||||
logger.info("Loaded %d bills into lookup map", len(bill_map))
|
logger.info("Loaded %d bills into lookup map", len(bill_map))
|
||||||
existing_bill_texts = {
|
existing_bill_texts = {
|
||||||
(row.bill_id, row.version_code)
|
(bill_text.bill_id, bill_text.version_code) for bill_text in session.scalars(select(BillText)).all()
|
||||||
for row in session.execute(select(BillText.bill_id, BillText.version_code)).all()
|
|
||||||
}
|
}
|
||||||
logger.info("Found %d existing bill text versions in DB", len(existing_bill_texts))
|
logger.info("Found %d existing bill text versions in DB", len(existing_bill_texts))
|
||||||
|
|
||||||
|
|||||||
@@ -63,9 +63,9 @@ class DeviceRegistry:
|
|||||||
return
|
return
|
||||||
|
|
||||||
with Session(self.engine) as session:
|
with Session(self.engine) as session:
|
||||||
device = session.execute(
|
device = session.scalars(
|
||||||
select(SignalDevice).where(SignalDevice.phone_number == phone_number)
|
select(SignalDevice).where(SignalDevice.phone_number == phone_number)
|
||||||
).scalar_one_or_none()
|
).one_or_none()
|
||||||
|
|
||||||
if device:
|
if device:
|
||||||
if device.safety_number != safety_number and device.trust_level != TrustLevel.BLOCKED:
|
if device.safety_number != safety_number and device.trust_level != TrustLevel.BLOCKED:
|
||||||
@@ -99,9 +99,9 @@ class DeviceRegistry:
|
|||||||
Returns True if the device was found and verified.
|
Returns True if the device was found and verified.
|
||||||
"""
|
"""
|
||||||
with Session(self.engine) as session:
|
with Session(self.engine) as session:
|
||||||
device = session.execute(
|
device = session.scalars(
|
||||||
select(SignalDevice).where(SignalDevice.phone_number == phone_number)
|
select(SignalDevice).where(SignalDevice.phone_number == phone_number)
|
||||||
).scalar_one_or_none()
|
).one_or_none()
|
||||||
|
|
||||||
if not device:
|
if not device:
|
||||||
logger.warning(f"Cannot verify unknown device: {phone_number}")
|
logger.warning(f"Cannot verify unknown device: {phone_number}")
|
||||||
@@ -139,9 +139,9 @@ class DeviceRegistry:
|
|||||||
def grant_role(self, phone_number: str, role: Role) -> bool:
|
def grant_role(self, phone_number: str, role: Role) -> bool:
|
||||||
"""Add a role to a device. Called by admin over SSH."""
|
"""Add a role to a device. Called by admin over SSH."""
|
||||||
with Session(self.engine) as session:
|
with Session(self.engine) as session:
|
||||||
device = session.execute(
|
device = session.scalars(
|
||||||
select(SignalDevice).where(SignalDevice.phone_number == phone_number)
|
select(SignalDevice).where(SignalDevice.phone_number == phone_number)
|
||||||
).scalar_one_or_none()
|
).one_or_none()
|
||||||
|
|
||||||
if not device:
|
if not device:
|
||||||
logger.warning(f"Cannot grant role for unknown device: {phone_number}")
|
logger.warning(f"Cannot grant role for unknown device: {phone_number}")
|
||||||
@@ -150,7 +150,7 @@ class DeviceRegistry:
|
|||||||
if any(record.name == role for record in device.roles):
|
if any(record.name == role for record in device.roles):
|
||||||
return True
|
return True
|
||||||
|
|
||||||
role_record = session.execute(select(RoleRecord).where(RoleRecord.name == role)).scalar_one_or_none()
|
role_record = session.scalars(select(RoleRecord).where(RoleRecord.name == role)).one_or_none()
|
||||||
|
|
||||||
if not role_record:
|
if not role_record:
|
||||||
logger.warning(f"Unknown role: {role}")
|
logger.warning(f"Unknown role: {role}")
|
||||||
@@ -165,9 +165,9 @@ class DeviceRegistry:
|
|||||||
def revoke_role(self, phone_number: str, role: Role) -> bool:
|
def revoke_role(self, phone_number: str, role: Role) -> bool:
|
||||||
"""Remove a role from a device. Called by admin over SSH."""
|
"""Remove a role from a device. Called by admin over SSH."""
|
||||||
with Session(self.engine) as session:
|
with Session(self.engine) as session:
|
||||||
device = session.execute(
|
device = session.scalars(
|
||||||
select(SignalDevice).where(SignalDevice.phone_number == phone_number)
|
select(SignalDevice).where(SignalDevice.phone_number == phone_number)
|
||||||
).scalar_one_or_none()
|
).one_or_none()
|
||||||
|
|
||||||
if not device:
|
if not device:
|
||||||
logger.warning(f"Cannot revoke role for unknown device: {phone_number}")
|
logger.warning(f"Cannot revoke role for unknown device: {phone_number}")
|
||||||
@@ -182,16 +182,16 @@ class DeviceRegistry:
|
|||||||
def set_roles(self, phone_number: str, roles: list[Role]) -> bool:
|
def set_roles(self, phone_number: str, roles: list[Role]) -> bool:
|
||||||
"""Replace all roles for a device. Called by admin over SSH."""
|
"""Replace all roles for a device. Called by admin over SSH."""
|
||||||
with Session(self.engine) as session:
|
with Session(self.engine) as session:
|
||||||
device = session.execute(
|
device = session.scalars(
|
||||||
select(SignalDevice).where(SignalDevice.phone_number == phone_number)
|
select(SignalDevice).where(SignalDevice.phone_number == phone_number)
|
||||||
).scalar_one_or_none()
|
).one_or_none()
|
||||||
|
|
||||||
if not device:
|
if not device:
|
||||||
logger.warning(f"Cannot set roles for unknown device: {phone_number}")
|
logger.warning(f"Cannot set roles for unknown device: {phone_number}")
|
||||||
return False
|
return False
|
||||||
|
|
||||||
role_names = [str(role) for role in roles]
|
role_names = [str(role) for role in roles]
|
||||||
records = list(session.execute(select(RoleRecord).where(RoleRecord.name.in_(role_names))).scalars().all())
|
records = session.scalars(select(RoleRecord).where(RoleRecord.name.in_(role_names))).all()
|
||||||
device.roles = records
|
device.roles = records
|
||||||
session.commit()
|
session.commit()
|
||||||
self._update_cache(phone_number, device)
|
self._update_cache(phone_number, device)
|
||||||
@@ -203,7 +203,7 @@ class DeviceRegistry:
|
|||||||
def list_devices(self) -> list[SignalDevice]:
|
def list_devices(self) -> list[SignalDevice]:
|
||||||
"""Return all known devices."""
|
"""Return all known devices."""
|
||||||
with Session(self.engine) as session:
|
with Session(self.engine) as session:
|
||||||
return list(session.execute(select(SignalDevice)).scalars().all())
|
return list(session.scalars(select(SignalDevice)).all())
|
||||||
|
|
||||||
def sync_identities(self) -> None:
|
def sync_identities(self) -> None:
|
||||||
"""Pull identity list from signal-cli and record any new ones."""
|
"""Pull identity list from signal-cli and record any new ones."""
|
||||||
@@ -226,9 +226,7 @@ class DeviceRegistry:
|
|||||||
def _load_device(self, phone_number: str) -> SignalDevice | None:
|
def _load_device(self, phone_number: str) -> SignalDevice | None:
|
||||||
"""Fetch a device by phone number (with joined roles)."""
|
"""Fetch a device by phone number (with joined roles)."""
|
||||||
with Session(self.engine) as session:
|
with Session(self.engine) as session:
|
||||||
return session.execute(
|
return session.scalars(select(SignalDevice).where(SignalDevice.phone_number == phone_number)).one_or_none()
|
||||||
select(SignalDevice).where(SignalDevice.phone_number == phone_number)
|
|
||||||
).scalar_one_or_none()
|
|
||||||
|
|
||||||
def _update_cache(self, phone_number: str, device: SignalDevice) -> None:
|
def _update_cache(self, phone_number: str, device: SignalDevice) -> None:
|
||||||
"""Refresh the cache entry for a device."""
|
"""Refresh the cache entry for a device."""
|
||||||
@@ -244,9 +242,9 @@ class DeviceRegistry:
|
|||||||
def _set_trust(self, phone_number: str, level: str, log_msg: str | None = None) -> bool:
|
def _set_trust(self, phone_number: str, level: str, log_msg: str | None = None) -> bool:
|
||||||
"""Update the trust level for a device."""
|
"""Update the trust level for a device."""
|
||||||
with Session(self.engine) as session:
|
with Session(self.engine) as session:
|
||||||
device = session.execute(
|
device = session.scalars(
|
||||||
select(SignalDevice).where(SignalDevice.phone_number == phone_number)
|
select(SignalDevice).where(SignalDevice.phone_number == phone_number)
|
||||||
).scalar_one_or_none()
|
).one_or_none()
|
||||||
|
|
||||||
if not device:
|
if not device:
|
||||||
return False
|
return False
|
||||||
@@ -269,7 +267,7 @@ def sync_roles(engine: Engine) -> None:
|
|||||||
expected = {role.value for role in Role}
|
expected = {role.value for role in Role}
|
||||||
|
|
||||||
with Session(engine) as session:
|
with Session(engine) as session:
|
||||||
existing = {record.name for record in session.execute(select(RoleRecord)).scalars().all()}
|
existing = set(session.scalars(select(RoleRecord.name)).all())
|
||||||
|
|
||||||
to_add = expected - existing
|
to_add = expected - existing
|
||||||
to_remove = existing - expected
|
to_remove = existing - expected
|
||||||
|
|||||||
Reference in New Issue
Block a user