@thisisagile/easy-mongo
Version:
Add support for MongoDB
1 lines • 4.2 kB
Source Map (JSON)
{"version":3,"sources":["../src/MongoGateway.ts"],"sourcesContent":["import { Filter, FindOptions, MongoProvider } from './MongoProvider';\nimport {\n asJson,\n Condition,\n Gateway,\n Id,\n ifDefined,\n isDefined,\n isPresent,\n Json,\n JsonValue,\n List,\n LogicalCondition,\n Optional,\n PageList,\n toArray,\n} from '@thisisagile/easy';\nimport { Collection } from './Collection';\nimport { stages } from './Stages';\n\nexport class MongoGateway implements Gateway<FindOptions> {\n constructor(readonly collection: Collection, readonly provider: MongoProvider = collection.provider) {}\n\n all(options?: FindOptions): Promise<PageList<Json>> {\n return this.provider.all(options).then(js => js.map(j => this.collection.in(j)));\n }\n\n byId(id: Id): Promise<Json | undefined> {\n return this.provider.byId(id).then(j => ifDefined(j, this.collection.in(j)));\n }\n\n by(key: string, value: JsonValue, options?: FindOptions): Promise<PageList<Json>> {\n return this.provider.by(key, value, options).then(js => js.map(j => this.collection.in(j)));\n }\n\n byIds(...ids: Id[]): Promise<List<Json>> {\n return this.find(this.collection.id.isIn(...ids));\n }\n\n find(q: JsonValue | Condition | LogicalCondition, options?: FindOptions): Promise<PageList<Json>> {\n return this.provider.find(asJson(q), options).then(js => js.map(j => this.collection.in(j)));\n }\n\n search(q: JsonValue, options?: FindOptions): Promise<PageList<Json>> {\n return this.find(this.collection.google(q), options);\n }\n\n filter(options?: FindOptions): Promise<PageList<Json>> {\n return this.all(options);\n }\n\n exists(id: Id): Promise<boolean> {\n return this.provider.byId(id).then(i => isDefined(i));\n }\n\n aggregate(...filters: Optional<Filter>[]): Promise<PageList<Json>> {\n return this.provider.aggregate(toArray(...filters).filter(isPresent) as Filter[]);\n }\n\n count(...filters: Optional<Filter>[]): Promise<number> {\n return this.aggregate(...filters, { $count: 'total' }).then(d => (d.first()?.total as number) ?? 0);\n }\n\n match(f: Filter): Promise<PageList<Json>> {\n return this.aggregate(stages.match.match(f));\n }\n\n add(item: Json): Promise<Json> {\n return this.provider.add(this.collection.out(item)).then(j => this.collection.in(j));\n }\n\n update(item: Json): Promise<Json> {\n return this.provider.update(this.collection.out(item)).then(j => this.collection.in(j));\n }\n\n remove(id: Id): Promise<boolean> {\n return this.provider.remove(id);\n }\n}\n"],"mappings":";;;;;AACA;AAAA,EACE;AAAA,EAIA;AAAA,EACA;AAAA,EACA;AAAA,EAOA;AAAA,OACK;AAIA,IAAM,eAAN,MAAmD;AAAA,EACxD,YAAqB,YAAiC,WAA0B,WAAW,UAAU;AAAhF;AAAiC;AAAA,EAAgD;AAAA,EAEtG,IAAI,SAAgD;AAClD,WAAO,KAAK,SAAS,IAAI,OAAO,EAAE,KAAK,QAAM,GAAG,IAAI,OAAK,KAAK,WAAW,GAAG,CAAC,CAAC,CAAC;AAAA,EACjF;AAAA,EAEA,KAAK,IAAmC;AACtC,WAAO,KAAK,SAAS,KAAK,EAAE,EAAE,KAAK,OAAK,UAAU,GAAG,KAAK,WAAW,GAAG,CAAC,CAAC,CAAC;AAAA,EAC7E;AAAA,EAEA,GAAG,KAAa,OAAkB,SAAgD;AAChF,WAAO,KAAK,SAAS,GAAG,KAAK,OAAO,OAAO,EAAE,KAAK,QAAM,GAAG,IAAI,OAAK,KAAK,WAAW,GAAG,CAAC,CAAC,CAAC;AAAA,EAC5F;AAAA,EAEA,SAAS,KAAgC;AACvC,WAAO,KAAK,KAAK,KAAK,WAAW,GAAG,KAAK,GAAG,GAAG,CAAC;AAAA,EAClD;AAAA,EAEA,KAAK,GAA6C,SAAgD;AAChG,WAAO,KAAK,SAAS,KAAK,OAAO,CAAC,GAAG,OAAO,EAAE,KAAK,QAAM,GAAG,IAAI,OAAK,KAAK,WAAW,GAAG,CAAC,CAAC,CAAC;AAAA,EAC7F;AAAA,EAEA,OAAO,GAAc,SAAgD;AACnE,WAAO,KAAK,KAAK,KAAK,WAAW,OAAO,CAAC,GAAG,OAAO;AAAA,EACrD;AAAA,EAEA,OAAO,SAAgD;AACrD,WAAO,KAAK,IAAI,OAAO;AAAA,EACzB;AAAA,EAEA,OAAO,IAA0B;AAC/B,WAAO,KAAK,SAAS,KAAK,EAAE,EAAE,KAAK,OAAK,UAAU,CAAC,CAAC;AAAA,EACtD;AAAA,EAEA,aAAa,SAAsD;AACjE,WAAO,KAAK,SAAS,UAAU,QAAQ,GAAG,OAAO,EAAE,OAAO,SAAS,CAAa;AAAA,EAClF;AAAA,EAEA,SAAS,SAA8C;AACrD,WAAO,KAAK,UAAU,GAAG,SAAS,EAAE,QAAQ,QAAQ,CAAC,EAAE,KAAK,OAAM,EAAE,MAAM,GAAG,SAAoB,CAAC;AAAA,EACpG;AAAA,EAEA,MAAM,GAAoC;AACxC,WAAO,KAAK,UAAU,OAAO,MAAM,MAAM,CAAC,CAAC;AAAA,EAC7C;AAAA,EAEA,IAAI,MAA2B;AAC7B,WAAO,KAAK,SAAS,IAAI,KAAK,WAAW,IAAI,IAAI,CAAC,EAAE,KAAK,OAAK,KAAK,WAAW,GAAG,CAAC,CAAC;AAAA,EACrF;AAAA,EAEA,OAAO,MAA2B;AAChC,WAAO,KAAK,SAAS,OAAO,KAAK,WAAW,IAAI,IAAI,CAAC,EAAE,KAAK,OAAK,KAAK,WAAW,GAAG,CAAC,CAAC;AAAA,EACxF;AAAA,EAEA,OAAO,IAA0B;AAC/B,WAAO,KAAK,SAAS,OAAO,EAAE;AAAA,EAChC;AACF;","names":[]}