Source

query/clauses/ValuesClause.ts

import { Clause } from "../Clause";
import { Priority } from "../constants";
import { ModelArg, required, type } from "@decaf-ts/decorator-validation";

/**
 * @summary The VALUES clause
 *
 * @param {ClauseArg} [clause]
 *
 * @class ValuesClause
 * @extends Clause
 *
 * @category Query
 * @subcategory Clauses
 */
export abstract class ValuesClause<Q, M> extends Clause<Q> {
  @required()
  @type(Array.name)
  models?: M[] = undefined;

  protected constructor(clause?: ModelArg<ValuesClause<Q, M>>) {
    super(Object.assign({}, clause, { priority: Priority.FROM }));
    this.models = clause?.models;
  }
  /**
   * @inheritDoc
   */
  abstract build(query: Q): Q;
}