import QueryColumnCondition from "../condition/query-column-condition";
import QueryOrdering from "../other/query-ordering";
import QueryTable from "../query-table";
import QueryColumn from "./query-column";
import QueryCondition from "../condition/query-condition";
import QueryJoinCondition from "../condition/query-join-condition";
import {ColumnModifier, ColumnName} from "../helpers/internal-types";
abstract class ValueColumn
, T> extends QueryColumn {
constructor(table: Table, name: ColumnName, modifiers: ColumnModifier[] = []) {
super(table, name, modifiers);
}
asc() {
return new QueryOrdering(this, 'ASC');
}
desc() {
return new QueryOrdering(this, 'DESC');
}
eq>(value: QueryColumn): QueryJoinCondition;
eq(value: T): QueryColumnCondition;
eq>(value: any): QueryCondition {
if (value instanceof QueryColumn) {
return new QueryJoinCondition(this, 'eq', value);
} else {
return new QueryColumnCondition(this, 'eq', value);
}
}
ne(value: T) {
return new QueryColumnCondition(this, 'ne', value);
}
}
export default ValueColumn;