Finalize ToDo's
This commit is contained in:
@@ -1,4 +1,3 @@
|
|||||||
|
|
||||||
async function run() {
|
async function run() {
|
||||||
//debugger
|
//debugger
|
||||||
//while (true) {}
|
//while (true) {}
|
||||||
|
|||||||
@@ -33,6 +33,8 @@ class AdminService extends cds.ApplicationService {
|
|||||||
this.on("*", async (req, next) => {
|
this.on("*", async (req, next) => {
|
||||||
if (!(req.target === undefined || req.target == null)) return next()
|
if (!(req.target === undefined || req.target == null)) return next()
|
||||||
//ToDo: check whether action or event is part of an extension
|
//ToDo: check whether action or event is part of an extension
|
||||||
|
// DO NOT OVERWRITE EXISTING Action Implementations!
|
||||||
|
// evaluate: Can we augment action implementation with super.next?
|
||||||
if (req.constructor.name === "EventMessage") {
|
if (req.constructor.name === "EventMessage") {
|
||||||
const code = getCode(req.event, "ON")
|
const code = getCode(req.event, "ON")
|
||||||
if (code) {
|
if (code) {
|
||||||
@@ -63,6 +65,8 @@ var counter = 1;
|
|||||||
|
|
||||||
function newLabel() {return "VM2 - req: " + counter++}
|
function newLabel() {return "VM2 - req: " + counter++}
|
||||||
|
|
||||||
|
//should only work in local exection (cds watch)
|
||||||
|
// alternative: Upon Bootstrapping, merge files into CSN
|
||||||
function getCodeFromFile(name, operation) {
|
function getCodeFromFile(name, operation) {
|
||||||
const filename = name + "." + operation + ".js"
|
const filename = name + "." + operation + ".js"
|
||||||
const file = path.join(__dirname, "..", "handlers", filename)
|
const file = path.join(__dirname, "..", "handlers", filename)
|
||||||
@@ -74,6 +78,7 @@ function getCodeFromFile(name, operation) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//after push this should be the only thing that works
|
||||||
function getCodeFromAnnotation(name, operation) {
|
function getCodeFromAnnotation(name, operation) {
|
||||||
return ""
|
return ""
|
||||||
}
|
}
|
||||||
@@ -96,9 +101,9 @@ async function executeCode(code, req, result, output) {
|
|||||||
console: "inherit",
|
console: "inherit",
|
||||||
timeout: 500,
|
timeout: 500,
|
||||||
allowAsync: true,
|
allowAsync: true,
|
||||||
sandbox: { req,
|
sandbox: { req, //todo: isolate req.data, req.reject, req.error, req.message
|
||||||
result,
|
result, //important for READ
|
||||||
output,
|
output, //used for Action Implementation
|
||||||
SELECT : (class extends require('@sap/cds/lib/ql/SELECT') {then(r,e) {return srv.run(this).then(r,e)}})._api(),
|
SELECT : (class extends require('@sap/cds/lib/ql/SELECT') {then(r,e) {return srv.run(this).then(r,e)}})._api(),
|
||||||
INSERT : (class extends require('@sap/cds/lib/ql/INSERT') {then(r,e) {return srv.run(this).then(r,e)}})._api(),
|
INSERT : (class extends require('@sap/cds/lib/ql/INSERT') {then(r,e) {return srv.run(this).then(r,e)}})._api(),
|
||||||
UPDATE : (class extends require('@sap/cds/lib/ql/UPDATE') {then(r,e) {return srv.run(this).then(r,e)}})._api(),
|
UPDATE : (class extends require('@sap/cds/lib/ql/UPDATE') {then(r,e) {return srv.run(this).then(r,e)}})._api(),
|
||||||
|
|||||||
@@ -1,5 +1,11 @@
|
|||||||
using from '..\admin-service';
|
//this file is machine-created during cds.build
|
||||||
|
namespace sap.capire.bookshop; //> important for reflection
|
||||||
|
using from '../db/schema';
|
||||||
|
using from '../srv/cat-service';
|
||||||
|
using from '../srv/admin-service';
|
||||||
|
|
||||||
annotate AdminService.Authors with @extension.logic: [{when: 'CREATE', code: 'async function run() {\r\n \/\/debugger\r\n \/\/while (true) {}\r\n \/\/process.exit()\r\n \/\/1.substring()\r\n \/\/ let res = await specialselect\r\n let res = await SELECT.one`title`.from(`Books`).where(`ID=201`)\r\n let { title } = res\r\n let Author = req.data\r\n Author.modifiedBy = \"Custom Event handler changed this!\"\r\n Author.placeOfDeath = \" --- Somewhere over \" + title + \" --- create in Sandbox\"\r\n \/\/await this.emit(\"createdAuthor\", { Author })\r\n return Author\r\n}\r\nrun()\r\n'},
|
annotate AdminService.Authors with @extension.logic: [{when: 'CREATE', code: 'async function run() {\r\n \/\/debugger\r\n \/\/while (true) {}\r\n \/\/process.exit()\r\n \/\/1.substring()\r\n \/\/ let res = await specialselect\r\n let res = await SELECT.one`title`.from(`Books`).where(`ID=201`)\r\n let { title } = res\r\n let Author = req.data\r\n Author.modifiedBy = \"Custom Event handler changed this!\"\r\n Author.placeOfDeath = \" --- Somewhere over \" + title + \" --- create in Sandbox\"\r\n \/\/await this.emit(\"createdAuthor\", { Author })\r\n return Author\r\n}\r\nrun()\r\n'},
|
||||||
{when: 'READ', code: 'function getYear(v) {\r\n return parseInt(v.substr(0, 4))\r\n}\r\nfunction getMonth(v) {\r\n return parseInt(v.substr(5, 2))\r\n}\r\nfunction getDay(v) {\r\n return parseInt(v.substr(8, 2))\r\n}\r\n\r\nfunction getAge(from, to) {\r\n if (from === undefined || from == null) return 0\r\n if (to === undefined || to == null) to = new Date().toISOString()\r\n let year = getYear(to) - getYear(from) - 1\r\n if (\r\n getMonth(to) > getMonth(from) ||\r\n (getMonth(to) === getMonth(from) && getDay(to) >= getDay(from))\r\n ) {\r\n year++\r\n }\r\n return year\r\n}\r\n\r\nconst result_ = Array.isArray(result) ? result : [result]\r\nfor (const row of result_) {\r\n row.modifiedBy += \" --- read in sandbox\"\r\n row.age = getAge(row.dateOfBirth, row.dateOfDeath)\r\n}'}
|
{when: 'READ', code: 'function getYear(v) {\r\n return parseInt(v.substr(0, 4))\r\n}\r\nfunction getMonth(v) {\r\n return parseInt(v.substr(5, 2))\r\n}\r\nfunction getDay(v) {\r\n return parseInt(v.substr(8, 2))\r\n}\r\n\r\nfunction getAge(from, to) {\r\n if (from === undefined || from == null) return 0\r\n if (to === undefined || to == null) to = new Date().toISOString()\r\n let year = getYear(to) - getYear(from) - 1\r\n if (\r\n getMonth(to) > getMonth(from) ||\r\n (getMonth(to) === getMonth(from) && getDay(to) >= getDay(from))\r\n ) {\r\n year++\r\n }\r\n return year\r\n}\r\n\r\nconst result_ = Array.isArray(result) ? result : [result]\r\nfor (const row of result_) {\r\n row.modifiedBy += \" --- read in sandbox\"\r\n row.age = getAge(row.dateOfBirth, row.dateOfDeath)\r\n}'}
|
||||||
];
|
];
|
||||||
|
annotate AdminService.Books with @extension.logic;
|
||||||
|
annotate CatalogService.ListOfBooks with @extension.logic;
|
||||||
Reference in New Issue
Block a user