Written completely in TypeScript.
npm i linquest
// first, create a service
const service = new LinqService('https://my.company.service.com/');
// then create a query
const query = service.createQuery<Company>('Companies');
// execute the query
const result = await query.where(p => p.Id > 5).toArrayAsync();
Linquest uses fetch as default, you might need to use a polyfill.
To use a custom request provider, you need to implement IAjaxProvider interface from jinqu
import { IAjaxProvider, AjaxOptions } from "jinqu";
// implement the IAjaxProvider interface
export class MyAjaxProvider implements IAjaxProvider {
ajax<T>(o: AjaxOptions): Promise<T> {
// implement this
}
}
// inject provider to LinqService
const service = new LinqService('https://my.company.service.com/', new MyAjaxProvider());
With code generation from a metadata (like Swagger or OpenAPI, you can really simplify the usage.
// generated code
export interface Company {
id: number;
name: string;
createDate: Date;
}
export class CompanyService extends LinqService {
constructor(provider?: IAjaxProvider) {
super('https://my.company.service.com/', provider);
}
companies() {
return this.createQuery<Company>('Companies');
}
}
// and you can use it like this
const service = new CompanyService();
const query = service.companies().where(c => c.name !== "Netflix"));
const result = await query.toArrayAsync();
linquest uses jinqu as a querying platform, if you want to use jinqu features with old browsers, please refer to jinqu documentation.
Linquest is under the MIT License.