mirror of
https://github.com/jupyterhub/jupyterhub.git
synced 2025-10-15 14:03:02 +00:00
refine use of joinedload
- use it fewer places - mostly on queries, not attributes - add innerjoin for some backrefs
This commit is contained in:
@@ -331,7 +331,7 @@ class Spawner(Base):
|
|||||||
|
|
||||||
id = Column(Integer, primary_key=True, autoincrement=True)
|
id = Column(Integer, primary_key=True, autoincrement=True)
|
||||||
user_id = Column(Integer, ForeignKey('users.id', ondelete='CASCADE'))
|
user_id = Column(Integer, ForeignKey('users.id', ondelete='CASCADE'))
|
||||||
user = relationship("User", back_populates="_orm_spawners", lazy="joined")
|
user = relationship("User", back_populates="_orm_spawners")
|
||||||
|
|
||||||
server_id = Column(Integer, ForeignKey('servers.id', ondelete='SET NULL'))
|
server_id = Column(Integer, ForeignKey('servers.id', ondelete='SET NULL'))
|
||||||
server = relationship(
|
server = relationship(
|
||||||
@@ -413,7 +413,6 @@ class Service(Base):
|
|||||||
server = relationship(
|
server = relationship(
|
||||||
Server,
|
Server,
|
||||||
back_populates="service",
|
back_populates="service",
|
||||||
lazy="joined",
|
|
||||||
single_parent=True,
|
single_parent=True,
|
||||||
cascade="all, delete-orphan",
|
cascade="all, delete-orphan",
|
||||||
)
|
)
|
||||||
@@ -569,7 +568,7 @@ class Hashed(Expiring):
|
|||||||
`kind='service'` only returns API tokens for services
|
`kind='service'` only returns API tokens for services
|
||||||
"""
|
"""
|
||||||
prefix_match = cls.find_prefix(db, token).options(
|
prefix_match = cls.find_prefix(db, token).options(
|
||||||
joinedload(cls.user), joinedload(User.roles)
|
joinedload(cls.user), joinedload(cls.service)
|
||||||
)
|
)
|
||||||
|
|
||||||
for orm_token in prefix_match:
|
for orm_token in prefix_match:
|
||||||
@@ -607,11 +606,9 @@ class APIToken(Hashed, Base):
|
|||||||
nullable=True,
|
nullable=True,
|
||||||
)
|
)
|
||||||
|
|
||||||
user = relationship("User", back_populates="api_tokens", lazy="joined")
|
user = relationship("User", back_populates="api_tokens")
|
||||||
service = relationship("Service", back_populates="api_tokens", lazy="joined")
|
service = relationship("Service", back_populates="api_tokens")
|
||||||
oauth_client = relationship(
|
oauth_client = relationship("OAuthClient", back_populates="access_tokens")
|
||||||
"OAuthClient", back_populates="access_tokens", lazy="joined"
|
|
||||||
)
|
|
||||||
|
|
||||||
id = Column(Integer, primary_key=True)
|
id = Column(Integer, primary_key=True)
|
||||||
hashed = Column(Unicode(255), unique=True)
|
hashed = Column(Unicode(255), unique=True)
|
||||||
@@ -818,14 +815,20 @@ class OAuthCode(Expiring, Base):
|
|||||||
client_id = Column(
|
client_id = Column(
|
||||||
Unicode(255), ForeignKey('oauth_clients.identifier', ondelete='CASCADE')
|
Unicode(255), ForeignKey('oauth_clients.identifier', ondelete='CASCADE')
|
||||||
)
|
)
|
||||||
client = relationship("OAuthClient", back_populates="codes", lazy="joined")
|
client = relationship(
|
||||||
|
"OAuthClient",
|
||||||
|
back_populates="codes",
|
||||||
|
)
|
||||||
code = Column(Unicode(36))
|
code = Column(Unicode(36))
|
||||||
expires_at = Column(Integer)
|
expires_at = Column(Integer)
|
||||||
redirect_uri = Column(Unicode(1023))
|
redirect_uri = Column(Unicode(1023))
|
||||||
session_id = Column(Unicode(255))
|
session_id = Column(Unicode(255))
|
||||||
# state = Column(Unicode(1023))
|
# state = Column(Unicode(1023))
|
||||||
user_id = Column(Integer, ForeignKey('users.id', ondelete='CASCADE'))
|
user_id = Column(Integer, ForeignKey('users.id', ondelete='CASCADE'))
|
||||||
user = relationship("User", back_populates="oauth_codes", lazy="joined")
|
user = relationship(
|
||||||
|
"User",
|
||||||
|
back_populates="oauth_codes",
|
||||||
|
)
|
||||||
|
|
||||||
scopes = Column(JSONList, default=[])
|
scopes = Column(JSONList, default=[])
|
||||||
|
|
||||||
@@ -839,6 +842,10 @@ class OAuthCode(Expiring, Base):
|
|||||||
db.query(cls)
|
db.query(cls)
|
||||||
.filter(cls.code == code)
|
.filter(cls.code == code)
|
||||||
.filter(or_(cls.expires_at == None, cls.expires_at >= cls.now()))
|
.filter(or_(cls.expires_at == None, cls.expires_at >= cls.now()))
|
||||||
|
.options(
|
||||||
|
# load user with the code
|
||||||
|
joinedload(cls.user, innerjoin=True),
|
||||||
|
)
|
||||||
.first()
|
.first()
|
||||||
)
|
)
|
||||||
|
|
||||||
@@ -861,10 +868,14 @@ class OAuthClient(Base):
|
|||||||
return self.identifier
|
return self.identifier
|
||||||
|
|
||||||
spawner = relationship(
|
spawner = relationship(
|
||||||
"Spawner", back_populates="oauth_client", uselist=False, lazy="joined"
|
"Spawner",
|
||||||
|
back_populates="oauth_client",
|
||||||
|
uselist=False,
|
||||||
)
|
)
|
||||||
service = relationship(
|
service = relationship(
|
||||||
"Service", back_populates="oauth_client", uselist=False, lazy="joined"
|
"Service",
|
||||||
|
back_populates="oauth_client",
|
||||||
|
uselist=False,
|
||||||
)
|
)
|
||||||
access_tokens = relationship(
|
access_tokens = relationship(
|
||||||
APIToken, back_populates='oauth_client', cascade='all, delete-orphan'
|
APIToken, back_populates='oauth_client', cascade='all, delete-orphan'
|
||||||
|
Reference in New Issue
Block a user