package org.example.join.sql;

import org.example.join.model.Table;
import org.example.join.model.TableJoin;

public class From extends SqlWrapper {

    private final Sql sql;

    protected From(Sql sql) {
        super(sql);
        this.sql = sql;
    }

    public Join innerJoin(Table table) {
        return join(SqlConstant.INNER_JOIN, table);
    }

    public Join leftJoin(Table table) {
        return join(SqlConstant.LEFT_JOIN, table);
    }

    public Join rightJoin(Table table) {
        return join(SqlConstant.RIGHT_JOIN, table);
    }

    private Join join(String joinType, Table table) {
        TableJoin tableJoin = new TableJoin(joinType, table);
        sql.queryTableList.add(tableJoin);
        return new Join(this, tableJoin.getQueryConditionList());
    }

}