Updates related to SQL and limit and offset
This commit is contained in:
@@ -520,8 +520,8 @@ def sql_insert_or_update(
|
|||||||
|
|
||||||
# ### BEGIN ### Core Help CRUD ### sql_select() ###
|
# ### BEGIN ### Core Help CRUD ### sql_select() ###
|
||||||
# The catch all SQL SELECT function - STI 2021-02-17
|
# The catch all SQL SELECT function - STI 2021-02-17
|
||||||
# This one does it all for SQL SELECT queries
|
# This one does it all for SQL SELECT queries. It now works with limit and offset! - STI 2023-06-29
|
||||||
# Updated 2021-09-07
|
# Updated 2023-06-29
|
||||||
@logger_reset
|
@logger_reset
|
||||||
def sql_select(
|
def sql_select(
|
||||||
table_name: str|None = None,
|
table_name: str|None = None,
|
||||||
@@ -529,6 +529,8 @@ def sql_select(
|
|||||||
record_id_random: str|None = None,
|
record_id_random: str|None = None,
|
||||||
field_name: str|None = None,
|
field_name: str|None = None,
|
||||||
field_value = None,
|
field_value = None,
|
||||||
|
limit: int = 9999999,
|
||||||
|
offset: int = 0,
|
||||||
sql: str|None = None,
|
sql: str|None = None,
|
||||||
data: dict|None = None,
|
data: dict|None = None,
|
||||||
rm_id_random: bool = False,
|
rm_id_random: bool = False,
|
||||||
@@ -539,6 +541,12 @@ def sql_select(
|
|||||||
) -> None|bool|dict|list:
|
) -> None|bool|dict|list:
|
||||||
log.setLevel(log_lvl)
|
log.setLevel(log_lvl)
|
||||||
|
|
||||||
|
if limit >= 0 and offset >= 0:
|
||||||
|
log.info(f'Creating partial SQL string for LIMIT and OFFSET. Limit: {limit}; Offset: {offset}')
|
||||||
|
sql_limit_offset = f'LIMIT {limit} OFFSET {offset}'
|
||||||
|
else:
|
||||||
|
sql_limit_offset = ''
|
||||||
|
|
||||||
if table_name and not (record_id or record_id_random or field_name or field_value or sql or data):
|
if table_name and not (record_id or record_id_random or field_name or field_value or sql or data):
|
||||||
# Select all records from a table
|
# Select all records from a table
|
||||||
log.info('Select all records from a table')
|
log.info('Select all records from a table')
|
||||||
@@ -546,6 +554,7 @@ def sql_select(
|
|||||||
f"""
|
f"""
|
||||||
SELECT *
|
SELECT *
|
||||||
FROM `{table_name}`
|
FROM `{table_name}`
|
||||||
|
{sql_limit_offset}
|
||||||
;
|
;
|
||||||
"""
|
"""
|
||||||
)
|
)
|
||||||
@@ -561,6 +570,7 @@ def sql_select(
|
|||||||
SELECT *
|
SELECT *
|
||||||
FROM `{table_name}`
|
FROM `{table_name}`
|
||||||
WHERE `{table_name}`.id = :record_id
|
WHERE `{table_name}`.id = :record_id
|
||||||
|
{sql_limit_offset}
|
||||||
;
|
;
|
||||||
"""
|
"""
|
||||||
)
|
)
|
||||||
@@ -572,12 +582,14 @@ def sql_select(
|
|||||||
SELECT *
|
SELECT *
|
||||||
FROM `{table_name}`
|
FROM `{table_name}`
|
||||||
WHERE `{table_name}`.id_random = :record_id_random
|
WHERE `{table_name}`.id_random = :record_id_random
|
||||||
|
{sql_limit_offset}
|
||||||
;
|
;
|
||||||
"""
|
"""
|
||||||
)
|
)
|
||||||
elif table_name and field_name and field_value and not (record_id or record_id_random or sql or data):
|
elif table_name and field_name and field_value and not (record_id or record_id_random or sql or data):
|
||||||
# Select all records from a table with a specific field and field value
|
# Select all records from a table with a specific field and field value
|
||||||
log.info('Select all records from a table with a specific field and field value')
|
log.info('Select all records from a table with a specific field and field value')
|
||||||
|
|
||||||
data = {}
|
data = {}
|
||||||
data[field_name] = field_value
|
data[field_name] = field_value
|
||||||
|
|
||||||
@@ -586,6 +598,7 @@ def sql_select(
|
|||||||
SELECT *
|
SELECT *
|
||||||
FROM `{table_name}`
|
FROM `{table_name}`
|
||||||
WHERE `{table_name}`.{field_name} = :{field_name}
|
WHERE `{table_name}`.{field_name} = :{field_name}
|
||||||
|
{sql_limit_offset}
|
||||||
;
|
;
|
||||||
"""
|
"""
|
||||||
)
|
)
|
||||||
@@ -611,6 +624,7 @@ def sql_select(
|
|||||||
SELECT *
|
SELECT *
|
||||||
FROM `{table_name}`
|
FROM `{table_name}`
|
||||||
WHERE {sql_where_string}
|
WHERE {sql_where_string}
|
||||||
|
{sql_limit_offset}
|
||||||
;
|
;
|
||||||
"""
|
"""
|
||||||
)
|
)
|
||||||
|
|||||||
@@ -35,6 +35,7 @@ from app.models.event_presenter_models import *
|
|||||||
from app.models.event_registration_models import *
|
from app.models.event_registration_models import *
|
||||||
from app.models.event_session_models import *
|
from app.models.event_session_models import *
|
||||||
from app.models.event_track_models import *
|
from app.models.event_track_models import *
|
||||||
|
from app.models.grant_models import *
|
||||||
from app.models.hosted_file_models import *
|
from app.models.hosted_file_models import *
|
||||||
from app.models.journal_models import *
|
from app.models.journal_models import *
|
||||||
from app.models.journal_entry_models import *
|
from app.models.journal_entry_models import *
|
||||||
@@ -98,6 +99,7 @@ obj_type_li['event_presenter'] = {'table_name': 'v_event_presenter', 'tbl_name_u
|
|||||||
obj_type_li['event_registration'] = {'table_name': 'v_event_registration', 'tbl_name_update': 'event_registration', 'base_name': Event_Registration_Base}
|
obj_type_li['event_registration'] = {'table_name': 'v_event_registration', 'tbl_name_update': 'event_registration', 'base_name': Event_Registration_Base}
|
||||||
obj_type_li['event_session'] = {'table_name': 'v_event_session', 'tbl_name_update': 'event_session', 'base_name': Event_Session_Base, 'exclude_for_db': {'poc_person_id', 'file_count', 'internal_use_count', 'enable_from', 'enable_to', 'event_name', 'event_start_datetime', 'event_end_datetime', 'event_location_name', 'event_track_name', 'event_abstract_list', 'event_badge_list', 'event_device_list', 'event_file_list', 'event_file_internal_use_list', 'event_location', 'event_location_list', 'event_person_list', 'event_presenter_cat', 'event_presentation_list', 'event_presenter_list', 'event_track', 'poc_event_person'}}
|
obj_type_li['event_session'] = {'table_name': 'v_event_session', 'tbl_name_update': 'event_session', 'base_name': Event_Session_Base, 'exclude_for_db': {'poc_person_id', 'file_count', 'internal_use_count', 'enable_from', 'enable_to', 'event_name', 'event_start_datetime', 'event_end_datetime', 'event_location_name', 'event_track_name', 'event_abstract_list', 'event_badge_list', 'event_device_list', 'event_file_list', 'event_file_internal_use_list', 'event_location', 'event_location_list', 'event_person_list', 'event_presenter_cat', 'event_presentation_list', 'event_presenter_list', 'event_track', 'poc_event_person'}}
|
||||||
obj_type_li['event_track'] = {'table_name': 'v_event_track', 'tbl_name_update': 'event_track', 'base_name': Event_Track_Base}
|
obj_type_li['event_track'] = {'table_name': 'v_event_track', 'tbl_name_update': 'event_track', 'base_name': Event_Track_Base}
|
||||||
|
obj_type_li['grant'] = {'table_name': 'v_grant', 'tbl_name_update': 'grant', 'base_name': Grant_Base}
|
||||||
obj_type_li['hosted_file'] = {'table_name': 'v_hosted_file', 'tbl_name_update': 'hosted_file', 'base_name': Hosted_File_Base}
|
obj_type_li['hosted_file'] = {'table_name': 'v_hosted_file', 'tbl_name_update': 'hosted_file', 'base_name': Hosted_File_Base}
|
||||||
#obj_type_li['hosted_file_link'] = {'table_name': 'hosted_file_link', 'tbl_name_update': 'hosted_file_link', 'base_name': Hosted_File_Link_Base}
|
#obj_type_li['hosted_file_link'] = {'table_name': 'hosted_file_link', 'tbl_name_update': 'hosted_file_link', 'base_name': Hosted_File_Link_Base}
|
||||||
obj_type_li['journal'] = {'table_name': 'v_journal', 'tbl_name_update': 'journal', 'base_name': Journal_Base}
|
obj_type_li['journal'] = {'table_name': 'v_journal', 'tbl_name_update': 'journal', 'base_name': Journal_Base}
|
||||||
@@ -170,15 +172,19 @@ async def get_obj_li(
|
|||||||
#obj_id: str=None,
|
#obj_id: str=None,
|
||||||
for_obj_type: Optional[str] = Query(None, max_length=50),
|
for_obj_type: Optional[str] = Query(None, max_length=50),
|
||||||
for_obj_id: Optional[str] = Query(None, max_length=22),
|
for_obj_id: Optional[str] = Query(None, max_length=22),
|
||||||
|
|
||||||
|
limit: int = 10000,
|
||||||
|
offset: int = 0,
|
||||||
|
|
||||||
x_account_id: str = Header(...),
|
x_account_id: str = Header(...),
|
||||||
by_alias: Optional[bool] = True,
|
by_alias: Optional[bool] = True,
|
||||||
include: Optional[list] = [],
|
# include: Optional[list] = [],
|
||||||
exclude: Optional[list] = [],
|
# exclude: Optional[list] = [],
|
||||||
exclude_unset: Optional[bool] = False,
|
exclude_unset: Optional[bool] = False,
|
||||||
exclude_none: Optional[bool] = True,
|
exclude_none: Optional[bool] = True,
|
||||||
response: Response = Response,
|
response: Response = Response,
|
||||||
):
|
):
|
||||||
log.setLevel(logging.WARNING) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL
|
log.setLevel(logging.DEBUG) # DEBUG, INFO, WARNING, ERROR, EXCEPTION, CRITICAL
|
||||||
log.debug(locals())
|
log.debug(locals())
|
||||||
|
|
||||||
debug_data = {}
|
debug_data = {}
|
||||||
@@ -221,7 +227,7 @@ async def get_obj_li(
|
|||||||
#data[f'{for_obj_type}_id'] = for_obj_id
|
#data[f'{for_obj_type}_id'] = for_obj_id
|
||||||
field_name = f'{for_obj_type}_id'
|
field_name = f'{for_obj_type}_id'
|
||||||
|
|
||||||
sql_result = sql_select(table_name=table_name, field_name=field_name, field_value=for_obj_id)
|
sql_result = sql_select(table_name=table_name, field_name=field_name, field_value=for_obj_id, limit=limit, offset=offset)
|
||||||
else:
|
else:
|
||||||
sql_result = sql_select(table_name=table_name)
|
sql_result = sql_select(table_name=table_name)
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user