File: raw.py

package info (click to toggle)
django-cte 2.0.0-1
  • links: PTS, VCS
  • area: main
  • in suites: sid
  • size: 356 kB
  • sloc: python: 3,245; makefile: 7
file content (38 lines) | stat: -rw-r--r-- 1,045 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
def raw_cte_sql(sql, params, refs):
    """Raw CTE SQL

    :param sql: SQL query (string).
    :param params: List of bind parameters.
    :param refs: Dict of output fields: `{"name": <Field instance>}`.
    :returns: Object that can be passed to `With`.
    """

    class raw_cte_ref:
        def __init__(self, output_field):
            self.output_field = output_field

        def get_source_expressions(self):
            return []

    class raw_cte_compiler:

        def __init__(self, connection):
            self.connection = connection

        def as_sql(self):
            return sql, params

        def quote_name_unless_alias(self, name):
            return self.connection.ops.quote_name(name)

    class raw_cte_queryset:
        class query:
            @staticmethod
            def get_compiler(connection, *, elide_empty=None):
                return raw_cte_compiler(connection)

            @staticmethod
            def resolve_ref(name):
                return raw_cte_ref(refs[name])

    return raw_cte_queryset