File: formatfilterover.cpp

package info (click to toggle)
sqlitestudio 3.4.17-1
  • links: PTS, VCS
  • area: main
  • in suites: sid
  • size: 61,252 kB
  • sloc: ansic: 403,094; cpp: 122,803; yacc: 2,619; java: 992; tcl: 495; sh: 440; xml: 426; makefile: 19
file content (46 lines) | stat: -rw-r--r-- 1,073 bytes parent folder | download | duplicates (2)
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
39
40
41
42
43
44
45
46
#include "formatfilterover.h"
#include "parser/ast/sqliteexpr.h"

FormatFilterOver::FormatFilterOver(SqliteFilterOver* filterOver) :
    filterOver(filterOver)
{
}

void FormatFilterOver::formatInternal()
{
    if (filterOver->filter)
        withStatement(filterOver->filter);

    if (filterOver->over)
        withStatement(filterOver->over);
}

FormatFilterOverFilter::FormatFilterOverFilter(SqliteFilterOver::Filter* filter) :
    filter(filter)
{
}

void FormatFilterOverFilter::formatInternal()
{
    withKeyword("FILTER").withParExprLeft().withKeyword("WHERE").withStatement(filter->expr).withParExprRight();
}

FormatFilterOverOver::FormatFilterOverOver(SqliteFilterOver::Over* over) :
    over(over)
{
}

void FormatFilterOverOver::formatInternal()
{
    withKeyword("OVER");

    switch (over->mode)
    {
        case SqliteFilterOver::Over::Mode::WINDOW:
            withParExprLeft().withStatement(over->window).withParExprRight();
            break;
        case SqliteFilterOver::Over::Mode::NAME:
            withId(over->name);
            break;
    }
}