seitime-frappe/frappe/query_builder
Abhishek Saxena 5c8856d66e
refactor: db.sql calls to frappe.qb (#16107)
# Changes

- Introduces `subqry` class to use in where clause when there is a non-column condition. eg.
> .where(subqry(no_of_roles) == 0)
- Convert SQL queries to frappe.qb 

# Testing

Functions with query refactors
- frappe.boot.get_user_pages_or_reports() -> Same output of `get_bootinfo()` as develop
- frappe.boot.get_unseen_notes() -> Forms the same query as develop 
```sql
SELECT `name`,`title`,`content`,`notify_on_every_login`
FROM `tabNote` WHERE `notify_on_every_login`=1
AND `expire_notification_on`>'2022-03-30 01:10:53.393874'
AND (SELECT `nsb`.`user` FROM `tabNote Seen By` `nsb` WHERE `nsb`.`parent`=`tabNote`.`name`) NOT IN ('Administrator')
```
- frappe.installer._delete_doctypes() -> installed and uninsalled a dummy app to drop tables

### Not tested
- frappe.make_property_setter()
- frappe.realtime.get_pending_tasks_for_doc() [whitelist method]
- frappe.sessions.Session.start()
- frappe.twofactor.cache_2fa_data()
2022-04-12 05:07:25 +00:00
..
__init__.py fix: ignore copy of getattr methods 2022-01-11 16:53:42 +05:30
builder.py chore(typing): Add type hints in qb builder classes 2022-01-10 13:44:23 +05:30
custom.py docs: ConstantColumn 2021-12-08 15:46:30 +05:30
functions.py feat(minor): Add DateFormat function util for qb 2022-03-31 13:39:06 +05:30
terms.py refactor: db.sql calls to frappe.qb (#16107) 2022-04-12 05:07:25 +00:00
utils.py refactor: code duplication for sql whitelisting 2022-03-24 17:49:28 +05:30