{"version":3,"sources":["../src/Collection.ts"],"sourcesContent":["import {\n  asString,\n  Condition,\n  Database,\n  Field,\n  Get,\n  Json,\n  LogicalCondition,\n  MapOptions,\n  Mapper,\n  mappings,\n  ofGet,\n  PropertyOptions,\n  Sort,\n  SortDirection,\n  Text,\n  toCondition,\n  toUuid,\n} from '@thisisagile/easy';\nimport { toMongoType } from './Utils';\nimport { MongoProvider } from './MongoProvider';\n\nexport class Collection extends Mapper {\n  protected readonly map = {\n    ...mappings,\n    field: <T = unknown>(name: string, options?: PropertyOptions<T>): Field => new Field(name, options),\n  };\n  readonly id = this.map.field('id', { dflt: toUuid });\n\n  constructor(options: MapOptions = { startFrom: 'source' }) {\n    super(options);\n  }\n\n  get db(): Database {\n    return Database.Default;\n  }\n\n  get provider(): MongoProvider {\n    return new MongoProvider(this);\n  }\n\n  where = (...conditions: Get<Condition, this>[]): Json =>\n    new LogicalCondition(\n      'and',\n      conditions.map(c => ofGet(c, this))\n    ).toJSON();\n\n  match = (condition: Get<Condition | LogicalCondition, this>): Json => ({ $match: ofGet(condition, this).toJSON() });\n\n  group = (...conditions: Get<Condition, this>[]): Json =>\n    new LogicalCondition(\n      'group',\n      conditions.map(c => ofGet(c, this))\n    ).toJSON();\n\n  google = (value: unknown): Condition => toCondition('$text', 'search', value);\n\n  search = (key: Text): Field => this.map.field(asString(key));\n\n  sort = (...conditions: Sort[]): Record<string, SortDirection> =>\n    conditions.reduce((cs: any, c) => {\n      cs[c.key] = c.value;\n      return cs;\n    }, {});\n\n  out(to: Json = {}): Json {\n    return toMongoType(super.out(to));\n  }\n}\n"],"mappings":";;;;;;;;AAAA;AAAA,EACE;AAAA,EAEA;AAAA,EACA;AAAA,EAGA;AAAA,EAEA;AAAA,EACA;AAAA,EACA;AAAA,EAKA;AAAA,EACA;AAAA,OACK;AAIA,IAAM,aAAN,cAAyB,OAAO;AAAA,EAClB,MAAM;AAAA,IACvB,GAAG;AAAA,IACH,OAAO,CAAc,MAAc,YAAwC,IAAI,MAAM,MAAM,OAAO;AAAA,EACpG;AAAA,EACS,KAAK,KAAK,IAAI,MAAM,MAAM,EAAE,MAAM,OAAO,CAAC;AAAA,EAEnD,YAAY,UAAsB,EAAE,WAAW,SAAS,GAAG;AACzD,UAAM,OAAO;AAAA,EACf;AAAA,EAEA,IAAI,KAAe;AACjB,WAAO,SAAS;AAAA,EAClB;AAAA,EAEA,IAAI,WAA0B;AAC5B,WAAO,IAAI,cAAc,IAAI;AAAA,EAC/B;AAAA,EAEA,QAAQ,IAAI,eACV,IAAI;AAAA,IACF;AAAA,IACA,WAAW,IAAI,OAAK,MAAM,GAAG,IAAI,CAAC;AAAA,EACpC,EAAE,OAAO;AAAA,EAEX,QAAQ,CAAC,eAA8D,EAAE,QAAQ,MAAM,WAAW,IAAI,EAAE,OAAO,EAAE;AAAA,EAEjH,QAAQ,IAAI,eACV,IAAI;AAAA,IACF;AAAA,IACA,WAAW,IAAI,OAAK,MAAM,GAAG,IAAI,CAAC;AAAA,EACpC,EAAE,OAAO;AAAA,EAEX,SAAS,CAAC,UAA8B,YAAY,SAAS,UAAU,KAAK;AAAA,EAE5E,SAAS,CAAC,QAAqB,KAAK,IAAI,MAAM,SAAS,GAAG,CAAC;AAAA,EAE3D,OAAO,IAAI,eACT,WAAW,OAAO,CAAC,IAAS,MAAM;AAChC,OAAG,EAAE,GAAG,IAAI,EAAE;AACd,WAAO;AAAA,EACT,GAAG,CAAC,CAAC;AAAA,EAEP,IAAI,KAAW,CAAC,GAAS;AACvB,WAAO,YAAY,MAAM,IAAI,EAAE,CAAC;AAAA,EAClC;AACF;","names":[]}