rdb-demo
Version:
ORM examples for npmjs.org/package/rdb
52 lines (42 loc) • 1.8 kB
JavaScript
let rdb = require('rdb');
let resetDemo = require('./db/resetDemo');
let Order = rdb.table('_order');
let Customer = rdb.table('_customer');
let OrderLine = rdb.table('_orderLine');
let DeliveryAddress = rdb.table('_deliveryAddress');
Order.primaryColumn('oId').guid().as('id');
Order.column('oOrderNo').string().as('orderNo');
Order.column('oCustomerId').string().as('customerId');
Customer.primaryColumn('cId').guid().as('id');
Customer.column('cName').string().as('name');
OrderLine.primaryColumn('lId').guid().as('id');
OrderLine.column('lOrderId').string().as('orderId');
OrderLine.column('lProduct').string().as('product');
DeliveryAddress.primaryColumn('dId').guid().as('id');
DeliveryAddress.column('dOrderId').string().as('orderId');
DeliveryAddress.column('dName').string().as('name');
DeliveryAddress.column('dStreet').string().as('street');
Order.join(Customer).by('oCustomerId').as('customer');
let line_order_relation = OrderLine.join(Order).by('lOrderId').as('order');
Order.hasMany(line_order_relation).as('lines');
let deliveryAddress_order_relation = DeliveryAddress.join(Order).by('dOrderId').as('order');
Order.hasOne(deliveryAddress_order_relation).as('deliveryAddress');
let db = rdb('postgres://rdb:rdb@localhost/rdbdemo');
module.exports = async function() {
try {
await resetDemo();
await db.transaction(async () => {
let order = await Order.getById('b0000000-b000-0000-0000-000000000000');
let strategy = {
lines: {
orderBy: ['product']
//alternative: orderBy: ['product asc']
}
};
let dto = await order.toDto(strategy);
console.log(dto);
});
} catch (e) {
console.log(e.stack);
}
}();