datum-focus
Version:
Data shape, model, metadata, JSON, JSON Schema, GraphQL, MongoDB query and aggregations, iterator generators
30 lines (25 loc) • 596 B
text/typescript
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: {},
};
};