Build sql script for get total count operations :param conn: postgres connection :param table_name: table name :param prefix_filters: the prefix filters, key is the column name, value is the prefix value :param equal_filters: the equal filters, key is the column name, value is t
(
conn,
table_name: str,
prefix_filters: Optional[Dict] = None,
equal_filters: Optional[Dict] = None,
)
| 38 | |
| 39 | |
| 40 | async def get_object_total( |
| 41 | conn, |
| 42 | table_name: str, |
| 43 | prefix_filters: Optional[Dict] = None, |
| 44 | equal_filters: Optional[Dict] = None, |
| 45 | ) -> int: |
| 46 | """ |
| 47 | Build sql script for get total count operations |
| 48 | :param conn: postgres connection |
| 49 | :param table_name: table name |
| 50 | :param prefix_filters: the prefix filters, key is the column name, value is the prefix value |
| 51 | :param equal_filters: the equal filters, key is the column name, value is the equal value |
| 52 | :return: sql query script and params |
| 53 | """ |
| 54 | |
| 55 | params = [] |
| 56 | where_clauses = [] |
| 57 | |
| 58 | # add prefix filters |
| 59 | if prefix_filters: |
| 60 | for field, value in prefix_filters.items(): |
| 61 | if value is not None: |
| 62 | where_clauses.append(f"{field} LIKE ${len(params) + 1}") |
| 63 | params.append(f"{value}%") |
| 64 | |
| 65 | # add equal filters |
| 66 | if equal_filters: |
| 67 | for field, value in equal_filters.items(): |
| 68 | if value is not None: |
| 69 | where_clauses.append(f"{field} = ${len(params) + 1}") |
| 70 | params.append(value) |
| 71 | |
| 72 | # build query |
| 73 | combined_where_clause = " AND ".join(where_clauses) |
| 74 | combined_where_clause = f"WHERE {combined_where_clause}" if where_clauses else "" |
| 75 | |
| 76 | query = f""" |
| 77 | SELECT COUNT(*) |
| 78 | FROM {table_name} |
| 79 | {combined_where_clause} |
| 80 | """ |
| 81 | |
| 82 | value = await conn.fetchval(query, *params) |
| 83 | return value |
| 84 | |
| 85 | |
| 86 | async def list_objects( |