Compare commits
4 Commits
next
...
ord-servic
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
7ccd11062a | ||
|
|
20348e0776 | ||
|
|
6acd5338d9 | ||
|
|
413d4de745 |
@@ -13,6 +13,7 @@
|
|||||||
"@cap-js/sqlite": "*"
|
"@cap-js/sqlite": "*"
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
|
"@cap-js/ord": "2",
|
||||||
"@sap/cds": ">=7",
|
"@sap/cds": ">=7",
|
||||||
"express": "^4.17.1"
|
"express": "^4.17.1"
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -20,11 +20,15 @@
|
|||||||
"kind": "odata",
|
"kind": "odata",
|
||||||
"model": "@capire/orders"
|
"model": "@capire/orders"
|
||||||
},
|
},
|
||||||
"messaging": true,
|
"messaging": {
|
||||||
"db": true
|
"[development]": { "kind": "file-based-messaging" },
|
||||||
|
"[hybrid]": { "kind": "enterprise-messaging-shared" },
|
||||||
|
"[production]": { "kind": "enterprise-messaging" }
|
||||||
|
},
|
||||||
|
"db": {
|
||||||
|
"kind": "sql"
|
||||||
|
}
|
||||||
},
|
},
|
||||||
"log": {
|
"log": { "service": true }
|
||||||
"service": true
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
1
ord/cds-plugin.js
Normal file
1
ord/cds-plugin.js
Normal file
@@ -0,0 +1 @@
|
|||||||
|
// just a dummy tag file to be identified as a plugin
|
||||||
12
ord/package.json
Normal file
12
ord/package.json
Normal file
@@ -0,0 +1,12 @@
|
|||||||
|
{
|
||||||
|
"name": "@cap-js/ord",
|
||||||
|
"version": "2.0.0",
|
||||||
|
"cds": {
|
||||||
|
"requires": {
|
||||||
|
"SAP ORD Service": {
|
||||||
|
"model": "@cap-js/ord/srv/ord-service",
|
||||||
|
"service": "OrdService"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
12
ord/srv/ord-service.cds
Normal file
12
ord/srv/ord-service.cds
Normal file
@@ -0,0 +1,12 @@
|
|||||||
|
// @requires: 'ORDconsumer'
|
||||||
|
@rest @path:'/ord/v1'
|
||||||
|
service OrdService {
|
||||||
|
@readonly entity documents {
|
||||||
|
key id: String;
|
||||||
|
}
|
||||||
|
@readonly entity csn {
|
||||||
|
key id: String;
|
||||||
|
}
|
||||||
|
|
||||||
|
function api (service: String, format: String) returns {};
|
||||||
|
}
|
||||||
73
ord/srv/ord-service.mjs
Normal file
73
ord/srv/ord-service.mjs
Normal file
@@ -0,0 +1,73 @@
|
|||||||
|
import cds from '@sap/cds'
|
||||||
|
export class OrdService extends cds.ApplicationService {
|
||||||
|
init(){
|
||||||
|
|
||||||
|
this.on('READ','documents', req => {
|
||||||
|
let csn = cds.context?.model || cds.model
|
||||||
|
return { ord: csn }
|
||||||
|
})
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Just an example to do something with id, if given.
|
||||||
|
* Try it out with URLs like that:
|
||||||
|
*
|
||||||
|
* - http://localhost:4004/ord/v1/documents
|
||||||
|
* - http://localhost:4004/ord/v1/documents/CatalogService
|
||||||
|
* - http://localhost:4004/ord/v1/documents/CatalogService.Books
|
||||||
|
* - http://localhost:4004/ord/v1/documents/CatalogService.Authors
|
||||||
|
*/
|
||||||
|
this.on('READ','csn', req => {
|
||||||
|
let csn = cds.context?.model || cds.model
|
||||||
|
let { id } = req.data
|
||||||
|
if (id) csn = csn.definitions[id] || 'not in model!'
|
||||||
|
return { id, csn }
|
||||||
|
})
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Just an example to serve arbitrary content with a function.
|
||||||
|
* Try it out with URLs like that:
|
||||||
|
*
|
||||||
|
* - http://localhost:4004/ord/v1/api?service=CatalogService
|
||||||
|
* - http://localhost:4004/ord/v1/api?service=CatalogService&format=edmx
|
||||||
|
* - http://localhost:4004/ord/v1/api?service=CatalogService&format=edmx-v2
|
||||||
|
* - http://localhost:4004/ord/v1/api?service=CatalogService&format=openapi
|
||||||
|
*/
|
||||||
|
this.on('api', req => {
|
||||||
|
let csn = cds.context?.model || cds.model
|
||||||
|
let { service, format = 'csn' } = req.data
|
||||||
|
let { res } = req.http
|
||||||
|
if (format === 'csn') {
|
||||||
|
if (!service) return res.send(csn)
|
||||||
|
service = csn.services[service]
|
||||||
|
return res.send({ definitions: [ service, ...service.entities ] .reduce ((all,e) => {
|
||||||
|
let d = all[e.name] = {...e}
|
||||||
|
delete d.projection // not part of the API
|
||||||
|
delete d.query // not part of the API
|
||||||
|
return all
|
||||||
|
},{})})
|
||||||
|
}
|
||||||
|
let api = cds.compile(csn).to[format]({service})
|
||||||
|
return res.send(api)
|
||||||
|
})
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Example how to register arbitrary express routes,
|
||||||
|
* and map them to our service's interface.
|
||||||
|
* Try it out with URLs like that:
|
||||||
|
*
|
||||||
|
* - http://localhost:4004/ord/v1/csn/CatalogService
|
||||||
|
* - http://localhost:4004/ord/v1/edmx/CatalogService
|
||||||
|
* - http://localhost:4004/ord/v1/openapi/CatalogService
|
||||||
|
* - http://localhost:4004/ord/v1/asyncapi/CatalogService
|
||||||
|
*
|
||||||
|
* NOTE: we add cds.middlewares.before to the route, which gives us all
|
||||||
|
* the context and auth handling, which is also available to CAP services.
|
||||||
|
*/
|
||||||
|
cds.app.get (`${this.path}/:api?/:service?`, cds.middlewares.before, req => {
|
||||||
|
const { api, service } = req.params
|
||||||
|
return this.api (service, api)
|
||||||
|
})
|
||||||
|
|
||||||
|
return super.init()
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -1 +1,2 @@
|
|||||||
|
cds.requires.messaging.kind = file-based-messaging
|
||||||
PORT = 4006
|
PORT = 4006
|
||||||
@@ -3,12 +3,6 @@
|
|||||||
"version": "1.0.0",
|
"version": "1.0.0",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@capire/common": "*",
|
"@capire/common": "*",
|
||||||
"@sap/cds": "*"
|
"@sap/cds": ">=5"
|
||||||
},
|
|
||||||
"cds": {
|
|
||||||
"requires": {
|
|
||||||
"messaging": true,
|
|
||||||
"db": true
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -15,6 +15,7 @@
|
|||||||
"./fiori",
|
"./fiori",
|
||||||
"./hello",
|
"./hello",
|
||||||
"./media",
|
"./media",
|
||||||
|
"./ord",
|
||||||
"./orders",
|
"./orders",
|
||||||
"./loggers",
|
"./loggers",
|
||||||
"./reviews"
|
"./reviews"
|
||||||
|
|||||||
@@ -1 +1,2 @@
|
|||||||
|
# cds.requires.messaging.kind = file-based-messaging
|
||||||
PORT = 4005
|
PORT = 4005
|
||||||
@@ -1,5 +1,5 @@
|
|||||||
ID;subject;rating;reviewer;title;text
|
subject;rating;reviewer;title;text
|
||||||
0;201;5;bob;Intriguing;Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet.
|
201;5;bob;Intriguing;Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet.
|
||||||
1;201;4;bob;Fascinating;Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Id diam maecenas ultricies mi eget mauris pharetra et. Risus at ultrices mi tempus imperdiet nulla malesuada pellentesque. Pulvinar mattis nunc sed blandit libero. Facilisis magna etiam tempor orci eu. Nec sagittis aliquam malesuada bibendum arcu. Eu consequat ac felis donec. Ultricies tristique nulla aliquet enim tortor at auctor urna nunc. Tortor posuere ac ut consequat semper viverra nam libero. Amet nisl suscipit adipiscing bibendum est ultricies integer quis auctor. Scelerisque purus semper eget duis at tellus. Elementum tempus egestas sed sed risus pretium. Arcu dictum varius duis at. Amet luctus venenatis lectus magna fringilla urna. Eget velit aliquet sagittis id consectetur purus ut faucibus. Vitae auctor eu augue ut lectus. Fermentum iaculis eu non diam phasellus vestibulum.
|
201;4;bob;Fascinating;Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Id diam maecenas ultricies mi eget mauris pharetra et. Risus at ultrices mi tempus imperdiet nulla malesuada pellentesque. Pulvinar mattis nunc sed blandit libero. Facilisis magna etiam tempor orci eu. Nec sagittis aliquam malesuada bibendum arcu. Eu consequat ac felis donec. Ultricies tristique nulla aliquet enim tortor at auctor urna nunc. Tortor posuere ac ut consequat semper viverra nam libero. Amet nisl suscipit adipiscing bibendum est ultricies integer quis auctor. Scelerisque purus semper eget duis at tellus. Elementum tempus egestas sed sed risus pretium. Arcu dictum varius duis at. Amet luctus venenatis lectus magna fringilla urna. Eget velit aliquet sagittis id consectetur purus ut faucibus. Vitae auctor eu augue ut lectus. Fermentum iaculis eu non diam phasellus vestibulum.
|
||||||
2;207;2;bob;What is this?;Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Libero justo laoreet sit amet cursus sit amet dictum. Nunc faucibus a pellentesque sit. Dis parturient montes nascetur ridiculus mus mauris vitae ultricies. Enim nunc faucibus a pellentesque. Commodo quis imperdiet massa tincidunt nunc pulvinar sapien. Cras ornare arcu dui vivamus. Facilisi etiam dignissim diam quis enim lobortis. Et molestie ac feugiat sed. Urna neque viverra justo nec ultrices dui. Ullamcorper a lacus vestibulum sed arcu non. Volutpat ac tincidunt vitae semper quis. Dignissim sodales ut eu sem. Feugiat in fermentum posuere urna nec. At augue eget arcu dictum varius.
|
207;2;bob;What is this?;Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Libero justo laoreet sit amet cursus sit amet dictum. Nunc faucibus a pellentesque sit. Dis parturient montes nascetur ridiculus mus mauris vitae ultricies. Enim nunc faucibus a pellentesque. Commodo quis imperdiet massa tincidunt nunc pulvinar sapien. Cras ornare arcu dui vivamus. Facilisi etiam dignissim diam quis enim lobortis. Et molestie ac feugiat sed. Urna neque viverra justo nec ultrices dui. Ullamcorper a lacus vestibulum sed arcu non. Volutpat ac tincidunt vitae semper quis. Dignissim sodales ut eu sem. Feugiat in fermentum posuere urna nec. At augue eget arcu dictum varius.
|
||||||
3;251;3;bob;It's dark...;Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Suscipit tellus mauris a diam. Velit aliquet sagittis id consectetur purus ut. Viverra adipiscing at in tellus integer. Vitae elementum curabitur vitae nunc. Mattis ullamcorper velit sed ullamcorper morbi. Diam quis enim lobortis scelerisque. Auctor neque vitae tempus quam pellentesque nec nam aliquam. Semper auctor neque vitae tempus. Quis eleifend quam adipiscing vitae proin. Neque convallis a cras semper auctor neque vitae. Imperdiet massa tincidunt nunc pulvinar sapien et ligula. Sit amet consectetur adipiscing elit ut aliquam purus. Pretium quam vulputate dignissim suspendisse.
|
251;3;bob;It's dark...;Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Suscipit tellus mauris a diam. Velit aliquet sagittis id consectetur purus ut. Viverra adipiscing at in tellus integer. Vitae elementum curabitur vitae nunc. Mattis ullamcorper velit sed ullamcorper morbi. Diam quis enim lobortis scelerisque. Auctor neque vitae tempus quam pellentesque nec nam aliquam. Semper auctor neque vitae tempus. Quis eleifend quam adipiscing vitae proin. Neque convallis a cras semper auctor neque vitae. Imperdiet massa tincidunt nunc pulvinar sapien et ligula. Sit amet consectetur adipiscing elit ut aliquam purus. Pretium quam vulputate dignissim suspendisse.
|
||||||
|
@@ -12,8 +12,12 @@
|
|||||||
},
|
},
|
||||||
"cds": {
|
"cds": {
|
||||||
"requires": {
|
"requires": {
|
||||||
"messaging": true,
|
"messaging": {
|
||||||
"db": true
|
"[development]": { "kind": "file-based-messaging" },
|
||||||
|
"[hybrid]": { "kind": "enterprise-messaging-shared" },
|
||||||
|
"[production]": { "kind": "enterprise-messaging" }
|
||||||
|
},
|
||||||
|
"db": { "kind": "sql" }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
Reference in New Issue
Block a user