Skip to content

Commit

Permalink
db: type-hint UsersConnectorComponent
Browse files Browse the repository at this point in the history
  • Loading branch information
tdesveaux committed May 21, 2024
1 parent 1aba788 commit 47e2809
Show file tree
Hide file tree
Showing 2 changed files with 24 additions and 21 deletions.
41 changes: 22 additions & 19 deletions master/buildbot/db/users.py
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@
from __future__ import annotations

import dataclasses
from typing import TYPE_CHECKING

import sqlalchemy as sa
from twisted.python import deprecate
Expand All @@ -26,6 +27,9 @@
from buildbot.util import identifiers
from buildbot.warnings import warn_deprecated

if TYPE_CHECKING:
from twisted.internet import defer


@dataclasses.dataclass
class UserModel:
Expand Down Expand Up @@ -62,11 +66,12 @@ class UsDict(UserModel):


class UsersConnectorComponent(base.DBConnectorComponent):
# returns a Deferred that returns a value
def findUserByAttr(self, identifier, attr_type, attr_data, _race_hook=None):
def findUserByAttr(
self, identifier: str, attr_type: str, attr_data: str, _race_hook=None
) -> defer.Deferred[int]:
# note that since this involves two tables, self.findSomethingId is not
# helpful
def thd(conn, no_recurse=False, identifier=identifier):
def thd(conn, no_recurse=False, identifier=identifier) -> int:
tbl = self.db.model.users
tbl_info = self.db.model.users_info

Expand Down Expand Up @@ -123,10 +128,9 @@ def thd(conn, no_recurse=False, identifier=identifier):

return self.db.pool.do(thd)

# returns a Deferred that returns a value
@base.cached("usdicts")
def getUser(self, uid):
def thd(conn):
def getUser(self, uid: int) -> defer.Deferred[UserModel | None]:
def thd(conn) -> UserModel | None:
tbl = self.db.model.users
tbl_info = self.db.model.users_info

Expand Down Expand Up @@ -157,8 +161,8 @@ def _model_from_row(self, users_row, attribute_rows=None):
)

# returns a Deferred that returns a value
def getUserByUsername(self, username):
def thd(conn):
def getUserByUsername(self, username: str | None) -> defer.Deferred[UserModel | None]:
def thd(conn) -> UserModel | None:
tbl = self.db.model.users
tbl_info = self.db.model.users_info

Expand All @@ -176,9 +180,8 @@ def thd(conn):

return self.db.pool.do(thd)

# returns a Deferred that returns a value
def getUsers(self):
def thd(conn):
def getUsers(self) -> defer.Deferred[list[UserModel]]:
def thd(conn) -> list[UserModel]:
tbl = self.db.model.users
rows = conn.execute(tbl.select()).fetchall()

Expand All @@ -189,12 +192,12 @@ def thd(conn):
# returns a Deferred that returns None
def updateUser(
self,
uid=None,
identifier=None,
bb_username=None,
bb_password=None,
attr_type=None,
attr_data=None,
uid: int | None = None,
identifier: str | None = None,
bb_username: str | None = None,
bb_password: str | None = None,
attr_type: str | None = None,
attr_data: str | None = None,
_race_hook=None,
):
def thd(conn):
Expand Down Expand Up @@ -269,8 +272,8 @@ def thd(conn):
return self.db.pool.do(thd)

# returns a Deferred that returns a value
def identifierToUid(self, identifier):
def thd(conn):
def identifierToUid(self, identifier) -> defer.Deferred[int | None]:
def thd(conn) -> int | None:
tbl = self.db.model.users

q = tbl.select().where(tbl.c.identifier == identifier)
Expand Down
4 changes: 2 additions & 2 deletions master/buildbot/test/fakedb/users.py
Original file line number Diff line number Diff line change
Expand Up @@ -107,13 +107,13 @@ def findUserByAttr(self, identifier, attr_type, attr_data):
self.db.insert_test_data([UserInfo(uid=uid, attr_type=attr_type, attr_data=attr_data)])
return defer.succeed(uid)

def getUser(self, uid):
def getUser(self, uid) -> defer.Deferred[UserModel | None]:
usdict = None
if uid in self.users:
usdict = self._model_from_uid(uid)
return defer.succeed(usdict)

def getUserByUsername(self, username):
def getUserByUsername(self, username) -> defer.Deferred[UserModel | None]:
usdict = None
for uid, user in self.users.items():
if user['bb_username'] == username:
Expand Down

0 comments on commit 47e2809

Please sign in to comment.