

package io.requery.sql.gen;

import io.requery.query.element.SetOperationElement;
import io.requery.sql.QueryBuilder;

import static io.requery.sql.Keyword.ALL;
import static io.requery.sql.Keyword.EXCEPT;
import static io.requery.sql.Keyword.INTERSECT;
import static io.requery.sql.Keyword.UNION;

class SetOperatorGenerator implements Generator<SetOperationElement> {

    @Override
    public void write(Output output, SetOperationElement query) {
        if(query.getInnerSetQuery() != null) {
            QueryBuilder qb = output.builder();
            switch (query.getOperator()) {
                case UNION:
                    qb.keyword(UNION);
                    break;
                case UNION_ALL:
                    qb.keyword(UNION, ALL);
                    break;
                case INTERSECT:
                    qb.keyword(INTERSECT);
                    break;
                case EXCEPT:
                    qb.keyword(EXCEPT);
                    break;
            }
            output.appendQuery(query.getInnerSetQuery());
        }
    }
}
