odata-v4-server
Version:
OData V4 Server
84 lines (73 loc) • 2.51 kB
text/typescript
import { ObjectID } from "mongodb";
import { createFilter } from "odata-v4-inmemory";
import { odata, ODataController, ODataServer, ODataQuery } from "../lib/index";
let categories = require("./categories").map((category) => {
category._id = category._id.toString();
return category;
});
let products = require("./products").map((product) => {
product._id = product._id.toString();
product.CategoryId = product.CategoryId.toString();
return product;
});
export class ProductsController extends ODataController{
.GET
find(.filter filter:ODataQuery){
if (filter) return products.filter(createFilter(filter));
return products;
}
.GET
findOne(.key key:string){
return products.filter(product => product._id == key)[0];
}
.POST
insert(.body product:any){
product._id = new ObjectID().toString();
products.push(product);
return product;
}
.PATCH
update(.key key:string, .body delta:any){
let product = products.filter(product => product._id == key)[0];
for (let prop in delta){
product[prop] = delta[prop];
}
}
.DELETE
remove(.key key:string){
products.splice(products.indexOf(products.filter(product => product._id == key)[0]), 1);
}
}
export class CategoriesController extends ODataController{
.GET
find(.filter filter:ODataQuery){
if (filter) return categories.filter(createFilter(filter));
return categories;
}
.GET
findOne(.key key:string){
return categories.filter(category => category._id == key)[0];
}
.POST
insert(.body category:any){
category._id = new ObjectID().toString();
categories.push(category);
return category;
}
.PATCH
update(.key key:string, .body delta:any){
let category = categories.filter(category => category._id == key)[0];
for (let prop in delta){
category[prop] = delta[prop];
}
}
.DELETE
remove(.key key:string){
categories.splice(categories.indexOf(categories.filter(category => category._id == key)[0]), 1);
}
}
.cors
.controller(ProductsController, true)
.controller(CategoriesController, true)
export class NorthwindODataServer extends ODataServer{}
NorthwindODataServer.create("/odata", 3000);