odata-v4-server
Version:
OData V4 Server
112 lines (99 loc) • 2.25 kB
text/typescript
import { ObjectID } from "mongodb";
import { Edm } from "../../lib/index";
const toObjectID = _id => _id && !(_id instanceof ObjectID) ? ObjectID.createFromHexString(_id) : _id;
.Annotate({
term: "UI.DisplayName",
string: "Products"
})
export class Product{
.Key
.Computed
.String
.Convert(toObjectID)
.Annotate({
term: "UI.DisplayName",
string: "Product identifier"
}, {
term: "UI.ControlHint",
string: "ReadOnly"
})
_id:ObjectID
.String
.Required
.Convert(toObjectID)
CategoryId:ObjectID
.ForeignKey("CategoryId")
.EntityType(Edm.ForwardRef(() => Category))
.Partner("Products")
Category:Category
.Boolean
Discontinued:boolean
.String
.Annotate({
term: "UI.DisplayName",
string: "Product title"
}, {
term: "UI.ControlHint",
string: "ShortText"
})
Name:string
.String
.Annotate({
term: "UI.DisplayName",
string: "Product English name"
}, {
term: "UI.ControlHint",
string: "ShortText"
})
QuantityPerUnit:string
.Decimal
.Annotate({
term: "UI.DisplayName",
string: "Unit price of product"
}, {
term: "UI.ControlHint",
string: "Decimal"
})
UnitPrice:number
}
.OpenType
.Annotate({
term: "UI.DisplayName",
string: "Categories"
})
export class Category{
.Key
.Computed
.String
.Convert(toObjectID)
.Annotate({
term: "UI.DisplayName",
string: "Category identifier"
},
{
term: "UI.ControlHint",
string: "ReadOnly"
})
_id:ObjectID
.String
Description:string
.String
.Annotate({
term: "UI.DisplayName",
string: "Category name"
},
{
term: "UI.ControlHint",
string: "ShortText"
})
Name:string
.ForeignKey("CategoryId")
.Collection(Edm.EntityType(Product))
.Partner("Category")
Products:Product[]
.Collection(Edm.String)
.Function
echo(){
return ["echotest"];
}
}