Fluent API for building GQL queries QueryBuilder provides a convenient way to construct complex GQL queries without manually concatenating strings.
| 18 | sys.path.insert(0, str(bindings_path)) |
| 19 | |
| 20 | class QueryBuilder: |
| 21 | ''' |
| 22 | Fluent API for building GQL queries |
| 23 | |
| 24 | QueryBuilder provides a convenient way to construct complex GQL queries |
| 25 | without manually concatenating strings. |
| 26 | ''' |
| 27 | |
| 28 | def __init__(self, session: 'Session'): |
| 29 | ''' |
| 30 | Initialize the query builder |
| 31 | ''' |
| 32 | self._session = session |
| 33 | self._match_patterns = [] |
| 34 | self._where_clauses = [] |
| 35 | self._with_clauses = [] |
| 36 | self._return_clause = None |
| 37 | self._order_by = None |
| 38 | self._skip = None |
| 39 | self._limit = None |
| 40 | |
| 41 | def match_pattern(self, pattern: str) -> 'QueryBuilder': |
| 42 | ''' |
| 43 | Add a MATCH pattern to the query |
| 44 | Can be called multiple times to add multiple MATCH patterns. |
| 45 | ''' |
| 46 | self._match_patterns.append(pattern) |
| 47 | return self |
| 48 | |
| 49 | def where_clause(self, condition: str) -> 'QueryBuilder': |
| 50 | ''' |
| 51 | Add a WHERE clause to the query |
| 52 | Can be called multiple times - conditions are AND'ed together. |
| 53 | ''' |
| 54 | self._where_clauses.append(condition) |
| 55 | return self |
| 56 | |
| 57 | def with_clause(self, clause: str) -> 'QueryBuilder': |
| 58 | ''' |
| 59 | Add a WITH clause to the query |
| 60 | WITH clauses are used for query chaining and intermediate results. |
| 61 | ''' |
| 62 | self._with_clauses.append(clause) |
| 63 | return self |
| 64 | |
| 65 | def return_clause(self, clause: str) -> 'QueryBuilder': |
| 66 | ''' |
| 67 | Set the RETURN clause to the query |
| 68 | Specifies what to return from the query. Required for MATCH queries. |
| 69 | ''' |
| 70 | self._return_clause = clause |
| 71 | return self |
| 72 | |
| 73 | def order_by(self, clause: str) -> 'QueryBuilder': |
| 74 | ''' |
| 75 | Set the ORDER BY clause to the query |
| 76 | ''' |
| 77 | self._order_by = clause |