Skip to content

Commit dfc4ef3

Browse files
Luiz K Matsumuradpage
authored andcommitted
refactor: clarify ServerGroup relationships to Server and SharedServer (pgadmin-org#10076)
The Server and SharedServer models each declared a relationship named 'servers' that actually pointed at the parent ServerGroup, with backrefs ('server'/'sharedserver') providing the collections. The naming was the inverse of what it modelled and made the call sites read oddly. Redefine the relationships in the natural direction using explicit back_populates: ServerGroup gains 'servers' and 'sharedservers' collections (carrying the existing delete-orphan cascade), and Server and SharedServer each gain a 'servergroup' reference. The two call sites that read the group name are updated from server.servers.name to server.servergroup.name accordingly. This is a naming/modelling cleanup with no functional or schema change, so no migration is required.
1 parent 7e76fb4 commit dfc4ef3

3 files changed

Lines changed: 28 additions & 14 deletions

File tree

web/pgadmin/model/__init__.py

Lines changed: 24 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -252,6 +252,20 @@ class ServerGroup(db.Model, UserScopedMixin):
252252
name = db.Column(db.String(128), nullable=False)
253253
__table_args__ = (db.UniqueConstraint('user_id', 'name'),)
254254

255+
servers = db.relationship(
256+
'Server',
257+
back_populates='servergroup',
258+
lazy='select',
259+
cascade=CASCADE_STR
260+
)
261+
262+
sharedservers = db.relationship(
263+
'SharedServer',
264+
back_populates='servergroup',
265+
lazy='select',
266+
cascade=CASCADE_STR
267+
)
268+
255269
@property
256270
def serialize(self):
257271
"""Return object data in easily serializable format"""
@@ -276,6 +290,11 @@ class Server(db.Model, UserScopedMixin):
276290
db.ForeignKey('servergroup.id'),
277291
nullable=False
278292
)
293+
servergroup = db.relationship(
294+
'ServerGroup',
295+
back_populates='servers',
296+
lazy='joined'
297+
)
279298
name = db.Column(db.String(128), nullable=False)
280299
host = db.Column(db.String(128), nullable=True)
281300
port = db.Column(
@@ -293,11 +312,6 @@ class Server(db.Model, UserScopedMixin):
293312
role = db.Column(db.String(64), nullable=True)
294313
comment = db.Column(db.String(1024), nullable=True)
295314
discovery_id = db.Column(db.String(128), nullable=True)
296-
servers = db.relationship(
297-
'ServerGroup',
298-
backref=db.backref('server', cascade=CASCADE_STR),
299-
lazy='joined'
300-
)
301315
db_res = db.Column(db.Text(), nullable=True)
302316
db_res_type = db.Column(db.String(32), default='databases')
303317
passexec_cmd = db.Column(db.Text(), nullable=True)
@@ -530,6 +544,11 @@ class SharedServer(db.Model, UserScopedMixin):
530544
db.ForeignKey('servergroup.id'),
531545
nullable=False
532546
)
547+
servergroup = db.relationship(
548+
'ServerGroup',
549+
back_populates='sharedservers',
550+
lazy='joined'
551+
)
533552
name = db.Column(db.String(128), nullable=False)
534553
host = db.Column(db.String(128), nullable=True)
535554
port = db.Column(
@@ -546,11 +565,6 @@ class SharedServer(db.Model, UserScopedMixin):
546565
role = db.Column(db.String(64), nullable=True)
547566
comment = db.Column(db.String(1024), nullable=True)
548567
discovery_id = db.Column(db.String(128), nullable=True)
549-
servers = db.relationship(
550-
'ServerGroup',
551-
backref=db.backref('sharedserver', cascade=CASCADE_STR),
552-
lazy='joined'
553-
)
554568
bgcolor = db.Column(db.String(10), nullable=True)
555569
fgcolor = db.Column(db.String(10), nullable=True)
556570
service = db.Column(db.Text(), nullable=True)

web/pgadmin/tools/schema_diff/__init__.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -307,10 +307,10 @@ def servers():
307307
"connected": connected
308308
}
309309

310-
if server.servers.name in res:
311-
res[server.servers.name].append(server_info)
310+
if server.servergroup.name in res:
311+
res[server.servergroup.name].append(server_info)
312312
else:
313-
res[server.servers.name] = [server_info]
313+
res[server.servergroup.name] = [server_info]
314314

315315
except Exception as e:
316316
app.logger.exception(e)

web/pgadmin/tools/sqleditor/__init__.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2434,7 +2434,7 @@ def get_new_connection_data(sgid=None, sid=None):
24342434
manager = driver.connection_manager(server.id)
24352435
conn = manager.connection()
24362436
connected = conn.connected()
2437-
server_group_data[server.servers.name].append({
2437+
server_group_data[server.servergroup.name].append({
24382438
'label': server.name,
24392439
"value": server.id,
24402440
'image': server_icon_and_background(connected, manager,

0 commit comments

Comments
 (0)