UNPKG

pailingual-odata

Version:

TypeScript client for OData v4 services

50 lines (44 loc) 1.62 kB
import { Query } from "./query"; import { CollectionSource } from "./collectionSource"; import { ApiMetadata } from "./metadata"; import { SingleSource } from "./singleSource"; import { generateOperations } from "./utils"; import { Options } from "./options"; export class ApiContextImpl{ constructor( protected readonly __metadata: ApiMetadata, protected readonly __options?: Options) { this.generate(); } generate() { const apiMetaData = this.__metadata; const opt = this.__options; for (let p in apiMetaData.entitySets) { const esMetadata = apiMetaData.entitySets[p]; Object.defineProperty(this, p, { get() { let query = Query.create(apiMetaData, esMetadata, opt); query = query.navigate(p, esMetadata); return new CollectionSource(esMetadata, apiMetaData, query); } }); } for (let p in apiMetaData.singletons) { const sMetadata = apiMetaData.singletons[p]; Object.defineProperty(this, p, { get() { let query = Query.create(apiMetaData, sMetadata, opt) .navigate(p, sMetadata); return new SingleSource(sMetadata, apiMetaData, query); } }) } generateOperations( this, () => Query.create(apiMetaData, null as any, opt), apiMetaData, undefined ) } }