Table.get now supports queries
This commit is contained in:
parent
76e65def2c
commit
9449cc3937
|
@ -34,10 +34,25 @@ class RecordTable(table.Table):
|
||||||
doc.after_insert(self._db)
|
doc.after_insert(self._db)
|
||||||
return doc.deserialize(self._db)
|
return doc.deserialize(self._db)
|
||||||
|
|
||||||
def get(self, doc_id: int, recurse: bool = False):
|
def get(self, *args, doc_id: int = None, recurse: bool = False, **kwargs):
|
||||||
document = super().get(doc_id=doc_id)
|
"""
|
||||||
if document:
|
Return exactly zero or one records from the database matching the supplied criteria.
|
||||||
return document.deserialize(self._db, recurse=recurse)
|
If more than one records match the criteria, return the first one. Criteria are ignored
|
||||||
|
if doc_id is specified.
|
||||||
|
|
||||||
|
Usage:
|
||||||
|
Table.get(doc_id=1)
|
||||||
|
Table.get(where("uid") == "abcdef")
|
||||||
|
|
||||||
|
"""
|
||||||
|
if doc_id:
|
||||||
|
document = super().get(doc_id=doc_id)
|
||||||
|
if document:
|
||||||
|
return document.deserialize(self._db, recurse=recurse)
|
||||||
|
|
||||||
|
matches = self.search(*args, recurse=recurse, **kwargs)
|
||||||
|
if matches:
|
||||||
|
return matches[0]
|
||||||
|
|
||||||
def search(self, *args, recurse: bool = False, **kwargs) -> List[Record]:
|
def search(self, *args, recurse: bool = False, **kwargs) -> List[Record]:
|
||||||
results = super().search(*args, **kwargs)
|
results = super().search(*args, **kwargs)
|
||||||
|
|
|
@ -116,8 +116,8 @@ def test_search(db):
|
||||||
assert ricky in crew.members
|
assert ricky in crew.members
|
||||||
|
|
||||||
Group = Query()
|
Group = Query()
|
||||||
crew = db.Group.search(Group.name == "Crew", recurse=False)
|
crew = db.Group.get(Group.name == "Crew", recurse=False)
|
||||||
assert kirk.reference in crew[0].members
|
assert kirk.reference in crew.members
|
||||||
|
|
||||||
|
|
||||||
def test_password(db):
|
def test_password(db):
|
||||||
|
|
Loading…
Reference in New Issue
Block a user