import { Model } from "./model";
import { KnownRecord, RECORD } from "./record";
import { Constraint } from "./bson/constraint";

type Tuple<T extends {}, K extends keyof T> = [K, T[K]];

export interface Filter<T extends KnownRecord> {
  $eq: Tuple<T, keyof T>;
}

export const createFilterModel = <T extends {}, C extends Constraint<T>>(
  name: string,
  model: Model<T>,
  description: string
): Model<C> => {
  const fields: any = {
    $or: {
      type: ["Something", RECORD]
    }
  };

  return {
    area: model.area,
    name,
    hint: description,
    fields,
    rules: {},
  };
};
