From bbaaefae5b0ee20a4b95f6ba14017899ba42d295 Mon Sep 17 00:00:00 2001 From: Daniel Hutzel Date: Wed, 12 Mar 2025 10:37:47 +0100 Subject: [PATCH] =?UTF-8?q?Spring=20Cleaning=20=E2=86=92=20removing=20obso?= =?UTF-8?q?lete=20stuff,=20and=20moved=20non-app=20things=20to=20./etc=20(?= =?UTF-8?q?#810)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Remove obsolete stuff, and moved non-app things to ./etc * remove test * Update package-lock --------- Co-authored-by: Christian Georgi --- .../data-viewer}/app/viewer/app.js | 0 .../data-viewer}/app/viewer/index.html | 0 {data-viewer => etc/data-viewer}/index.cds | 0 {data-viewer => etc/data-viewer}/package.json | 0 .../data-viewer}/srv/data-service.cds | 0 .../data-viewer}/srv/data-service.js | 0 {loggers => etc/loggers}/app/loggers.html | 0 {loggers => etc/loggers}/package.json | 0 {loggers => etc/loggers}/readme.md | 0 {loggers => etc/loggers}/srv/dummy.cds | 0 {loggers => etc/loggers}/srv/loggers.cds | 0 {loggers => etc/loggers}/srv/loggers.js | 0 {loggers => etc/loggers}/test/requests.http | 0 hello/README.md | 15 ---- hello/package.json | 12 ---- hello/srv/world.cds | 3 - hello/srv/world.js | 7 -- hello/srv/world.ts | 7 -- hello/test/test.http | 5 -- media/db/data-model.cds | 13 ---- media/index.cds | 2 - media/package.json | 19 ----- media/srv/media-service.cds | 9 --- media/srv/media-service.js | 68 ------------------ media/test/Test.png | Bin 3118 -> 0 bytes media/test/media.http | 35 --------- package-lock.json | 49 +++++++------ package.json | 16 ++--- samples.md | 10 +-- test/hello-world.test.js | 22 ------ 30 files changed, 33 insertions(+), 259 deletions(-) rename {data-viewer => etc/data-viewer}/app/viewer/app.js (100%) rename {data-viewer => etc/data-viewer}/app/viewer/index.html (100%) rename {data-viewer => etc/data-viewer}/index.cds (100%) rename {data-viewer => etc/data-viewer}/package.json (100%) rename {data-viewer => etc/data-viewer}/srv/data-service.cds (100%) rename {data-viewer => etc/data-viewer}/srv/data-service.js (100%) rename {loggers => etc/loggers}/app/loggers.html (100%) rename {loggers => etc/loggers}/package.json (100%) rename {loggers => etc/loggers}/readme.md (100%) rename {loggers => etc/loggers}/srv/dummy.cds (100%) rename {loggers => etc/loggers}/srv/loggers.cds (100%) rename {loggers => etc/loggers}/srv/loggers.js (100%) rename {loggers => etc/loggers}/test/requests.http (100%) delete mode 100644 hello/README.md delete mode 100644 hello/package.json delete mode 100644 hello/srv/world.cds delete mode 100644 hello/srv/world.js delete mode 100644 hello/srv/world.ts delete mode 100644 hello/test/test.http delete mode 100644 media/db/data-model.cds delete mode 100644 media/index.cds delete mode 100644 media/package.json delete mode 100644 media/srv/media-service.cds delete mode 100644 media/srv/media-service.js delete mode 100644 media/test/Test.png delete mode 100644 media/test/media.http delete mode 100644 test/hello-world.test.js diff --git a/data-viewer/app/viewer/app.js b/etc/data-viewer/app/viewer/app.js similarity index 100% rename from data-viewer/app/viewer/app.js rename to etc/data-viewer/app/viewer/app.js diff --git a/data-viewer/app/viewer/index.html b/etc/data-viewer/app/viewer/index.html similarity index 100% rename from data-viewer/app/viewer/index.html rename to etc/data-viewer/app/viewer/index.html diff --git a/data-viewer/index.cds b/etc/data-viewer/index.cds similarity index 100% rename from data-viewer/index.cds rename to etc/data-viewer/index.cds diff --git a/data-viewer/package.json b/etc/data-viewer/package.json similarity index 100% rename from data-viewer/package.json rename to etc/data-viewer/package.json diff --git a/data-viewer/srv/data-service.cds b/etc/data-viewer/srv/data-service.cds similarity index 100% rename from data-viewer/srv/data-service.cds rename to etc/data-viewer/srv/data-service.cds diff --git a/data-viewer/srv/data-service.js b/etc/data-viewer/srv/data-service.js similarity index 100% rename from data-viewer/srv/data-service.js rename to etc/data-viewer/srv/data-service.js diff --git a/loggers/app/loggers.html b/etc/loggers/app/loggers.html similarity index 100% rename from loggers/app/loggers.html rename to etc/loggers/app/loggers.html diff --git a/loggers/package.json b/etc/loggers/package.json similarity index 100% rename from loggers/package.json rename to etc/loggers/package.json diff --git a/loggers/readme.md b/etc/loggers/readme.md similarity index 100% rename from loggers/readme.md rename to etc/loggers/readme.md diff --git a/loggers/srv/dummy.cds b/etc/loggers/srv/dummy.cds similarity index 100% rename from loggers/srv/dummy.cds rename to etc/loggers/srv/dummy.cds diff --git a/loggers/srv/loggers.cds b/etc/loggers/srv/loggers.cds similarity index 100% rename from loggers/srv/loggers.cds rename to etc/loggers/srv/loggers.cds diff --git a/loggers/srv/loggers.js b/etc/loggers/srv/loggers.js similarity index 100% rename from loggers/srv/loggers.js rename to etc/loggers/srv/loggers.js diff --git a/loggers/test/requests.http b/etc/loggers/test/requests.http similarity index 100% rename from loggers/test/requests.http rename to etc/loggers/test/requests.http diff --git a/hello/README.md b/hello/README.md deleted file mode 100644 index 4ac6f0a9..00000000 --- a/hello/README.md +++ /dev/null @@ -1,15 +0,0 @@ -# Hello World Getting Started Sample - -## Next Steps - -- To run the JavaScript implementation, open a new terminal and run `cds watch`. -- To run the TypeScript implementation, open a new terminal and run `cds-ts watch`. - -Then call the service at: http://localhost:4004/say/hello(to='world') - -## Learn More - -Learn more about: - -- [Hello World!](https://cap.cloud.sap/docs/get-started/hello-world) -- [Using TypeScript](https://cap.cloud.sap/docs/node.js/typescript) diff --git a/hello/package.json b/hello/package.json deleted file mode 100644 index fb33e171..00000000 --- a/hello/package.json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "name": "@capire/hello-world", - "version": "1.0.0", - "scripts": { - "test": "npx jest --silent", - "start": "cds-serve srv/world.cds", - "start:ts": "cds-ts serve srv/world.cds" - }, - "dependencies": { - "@sap/cds": ">=5.0.4" - } -} diff --git a/hello/srv/world.cds b/hello/srv/world.cds deleted file mode 100644 index 0bceafcb..00000000 --- a/hello/srv/world.cds +++ /dev/null @@ -1,3 +0,0 @@ -service say { - function hello (to:String) returns String; -} \ No newline at end of file diff --git a/hello/srv/world.js b/hello/srv/world.js deleted file mode 100644 index c5cd2495..00000000 --- a/hello/srv/world.js +++ /dev/null @@ -1,7 +0,0 @@ -module.exports = class say { - hello(req) { - let {to} = req.data - if (to === 'me') to = require('os').userInfo().username - return `Hello ${to}!` - } -} diff --git a/hello/srv/world.ts b/hello/srv/world.ts deleted file mode 100644 index e812c41e..00000000 --- a/hello/srv/world.ts +++ /dev/null @@ -1,7 +0,0 @@ -import { Request } from "@sap/cds" - -module.exports = class say { - hello(req: Request) { - return `Hello ${req.data.to} from a TypeScript file!` - } -} diff --git a/hello/test/test.http b/hello/test/test.http deleted file mode 100644 index 6e530877..00000000 --- a/hello/test/test.http +++ /dev/null @@ -1,5 +0,0 @@ -GET http://localhost:4004/odata/v4/say/hello -### - -GET http://localhost:4004/odata/v4/say/hello(to='me') -### diff --git a/media/db/data-model.cds b/media/db/data-model.cds deleted file mode 100644 index 2ad6c28e..00000000 --- a/media/db/data-model.cds +++ /dev/null @@ -1,13 +0,0 @@ -namespace sap.capire.media; - -entity Media { - - key id:Integer; - @Core.MediaType: mediaType - content : LargeBinary ; - - @Core.IsMediaType: true - mediaType : String; - fileName : String; - applicationName:String; -} \ No newline at end of file diff --git a/media/index.cds b/media/index.cds deleted file mode 100644 index 9ac07e86..00000000 --- a/media/index.cds +++ /dev/null @@ -1,2 +0,0 @@ -using from './db/data-model'; -using from './srv/media-service'; diff --git a/media/package.json b/media/package.json deleted file mode 100644 index 8fb8100a..00000000 --- a/media/package.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "name": "@capire/media", - "version": "1.0.0", - "dependencies": { - "lokijs": "^1.5.6" - }, - "files": [ - "db", - "srv", - "index.cds" - ], - "cds": { - "requires": { - "db": { - "kind": "sql" - } - } - } -} diff --git a/media/srv/media-service.cds b/media/srv/media-service.cds deleted file mode 100644 index 811dd741..00000000 --- a/media/srv/media-service.cds +++ /dev/null @@ -1,9 +0,0 @@ -using { sap.capire.media as db } from '../db/data-model'; -namespace sap.capire.media; - -@path: '/media-server' -service MediaServer { - entity Media as projection on db.Media ; -} - - \ No newline at end of file diff --git a/media/srv/media-service.js b/media/srv/media-service.js deleted file mode 100644 index ed9d480c..00000000 --- a/media/srv/media-service.js +++ /dev/null @@ -1,68 +0,0 @@ -const loki = require('lokijs') -const db = new loki('DB') -const mediaDB = db.addCollection('Media') -const { Readable, PassThrough } = require('stream') - -module.exports = srv => { - srv.before('CREATE', 'Media', req => { - const obj = mediaDB.insert({ media: '' }) - req.data.id = obj.$loki - }) - - srv.on('UPDATE', 'Media', (req, next) => { - const url = req.path - if (url.includes('content')) { - const id = req.data.id - const obj = mediaDB.get(id) - if (!obj) { - req.reject(404, 'No record found for the ID') - return - } - const stream = new PassThrough() - const chunks = [] - stream.on('data', chunk => { - chunks.push(chunk) - }) - stream.on('end', () => { - obj.media = Buffer.concat(chunks).toString('base64') - mediaDB.update(obj) - }) - req.data.content.pipe(stream) - } else return next() - }) - - srv.on('READ', 'Media', (req, next) => { - const url = req.path - if (url.includes('content')) { - const id = req.data.id - const mediaObj = mediaDB.get(id) - if (!mediaObj) { - req.reject(404, 'Media not found for the ID') - return - } - const decodedMedia = Buffer.from( - mediaObj.media.split(';base64,').pop(), - 'base64' - ) - return _formatResult(decodedMedia) - } else return next() //> delegate to next/default handlers - }) - - srv.on('DELETE', 'Media', (req, next) => { - const id = req.data.id - mediaDB - .chain() - .find({ $loki: id }) - .remove() - return next() //> delegate to next/default handlers - }) - - function _formatResult (decodedMedia) { - const readable = new Readable() - const result = new Array() - readable.push(decodedMedia) - readable.push(null) - result.push({ value: readable }) - return result - } -} diff --git a/media/test/Test.png b/media/test/Test.png deleted file mode 100644 index 89bf64971af7ce3250fe59743687bd7930cb24a6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3118 zcmb7GeK^x=AD@Gmx13~%LoY^Ys8D&yj=UvLCJ{?mnnZ*l#K)oo)~7MIh)QO&vRYR^*lY-@4D~r=l*`b_vicl-PiBFexC=fE{=+F zyW{`>fTGhWJ2wD80wNx=+eDr?bZWH7NJP3ho&;3)X-$h3+x(p!?EstN=Sfp(y2t|z zKLw8j0OVD~Ljr)$RTnvBqMXjy%M8h=%WsoIKL6w^a%n`_dqvrXg@y)Pj{?}D0xm@b zAa}n74e04bRIR@Xy+*CLQa`xU66xnTU~LL;USr;K7pjE z`#8C`u1^eh9w^N6wg(TOXP+@9kJR-b)1?QYI{mPW-oof-{DOxctQMni^J0*E096 zp!%T(&&@hC_49RA2z5tg@?37G_mMCmWug#f?JHOan1>nljK*xh^OJ615Wq}? zqOOkMZ4H0cvN>}x-B&%F&HQj?e2KyL>uN96lg~r|&)37;b7~Na?0~U2ZJneC5`6X61<%JfEmeKnjILf`*kWFv4+FqSwcs@*&bWDWu#1uPKB_mo;Eix`T|-yOcMLW)|+y=WDhXCn(jU-~c-0Dmz7x_umo%^XRCM`mfbYUnJUxty*K&p? zD8aV!W@pbe?Jh<6=1a;Ld)TYhr|TQ!lB`~QBjh71iXbYhe_1f6T7N^hRX*Q(dQ1A!hf2 z!;wKeYh?(_CSaj<`qi)&(W!$m8gD~dgBnXO9F>ay5kmBvOgfKRUgx;tj0Y&}CLJlP zt~s7;KB`U}${A?n-9a$O`?h+z!pIdORn#PoF04IdIdqi*aO{J zha}@wAzi3Tlo^>9s|H>fb{}t;kUYh_Z@hb7`$}VOJd+#>&D$I#M_uZy} zE%2c0`nO!Q)x>Wg0Yz$(1C`JbQd?XRM2*1;#Mw;w#=m#gIpC8;2?0YNWO}y9L#~mx zQg+;xXNrpThg^I3ZA;*oiJYyt5nZ)a*DZ3pU8On6XgLs={>90J1QWHWX~|aDdck%F zfkc%!bOAm-`Rk?KS2xHM48}uVO%T}oT3Z^MRz?^LxN|~O`0)OqkYg!sgzDi&-hBka zp+>4(C_4U-&)a|5S;cX6u)oF=Dp%r zDDX!WcWV)uPl_WNL^*W0lQ5ym+`V?s_6~h3c~FN{lRkVU&D^~t1?n=hNt-@RT4RHR zEegc`KkjlBY)G*=Y;Bk82_ss>(_D(4{p^Wtd%VcEI}-CM2d^l36hvg^*hyo@`NJs_ z;icxw&z>T`ocw(UBz4j?aA^p~p*>5n*5+LVf)@HyB|D>MdkXv%;`Wzo&PIW~$ZD|W zv=L#3`EofmMsG#!0S*zdx0!bm^{$3P)5kYwmm_|m@)Y?vy zrhuDkQ7FpQ6}L)`-kGF>=S6qDT(_P(J>i|xQy6%8R$RmYGKD{?P31C(%u3` zQ?yx7gMGOambEp26(zpzRQn$g3G4p3)R$Awen1PVQbWmilur0;?5cT?~VRma#viMsGQaQ5N= za>0fhi!C(N5Y!-PW@=Vj&K(u%W!FDnXI0fUZtHTU1da0C6@5I5g$V@) ztz8dq@%*{XNa4G*57f?2Md_5sZY^PjK{oxdjB^Ku`(DyfVwv;zPdE6h_zN6*8b5pA zS9hG9m2flUNTk0ilx7o|-d>U35GijAk#Z)T@_F>o99;jUa)Jo#gxd=8" @@ -68,10 +66,26 @@ "data-viewer": { "name": "@capire/data-viewer", "version": "0.1.0", + "extraneous": true, "dependencies": { "@sap/cds": ">=5.0.4" } }, + "etc/data-viewer": { + "name": "@capire/data-viewer", + "version": "0.1.0", + "dependencies": { + "@sap/cds": ">=5.0.4" + } + }, + "etc/loggers": { + "name": "@capire/loggers", + "version": "1.0.0", + "dependencies": { + "@sap/cds": ">=5.9", + "express": "^4.17.1" + } + }, "fiori": { "name": "@capire/fiori", "version": "1.0.0", @@ -88,6 +102,7 @@ "hello": { "name": "@capire/hello-world", "version": "1.0.0", + "extraneous": true, "dependencies": { "@sap/cds": ">=5.0.4" } @@ -95,6 +110,7 @@ "loggers": { "name": "@capire/loggers", "version": "1.0.0", + "extraneous": true, "dependencies": { "@sap/cds": ">=5.9", "express": "^4.17.1" @@ -103,6 +119,7 @@ "media": { "name": "@capire/media", "version": "1.0.0", + "extraneous": true, "dependencies": { "lokijs": "^1.5.6" } @@ -176,23 +193,15 @@ "link": true }, "node_modules/@capire/data-viewer": { - "resolved": "data-viewer", + "resolved": "etc/data-viewer", "link": true }, "node_modules/@capire/fiori": { "resolved": "fiori", "link": true }, - "node_modules/@capire/hello-world": { - "resolved": "hello", - "link": true - }, "node_modules/@capire/loggers": { - "resolved": "loggers", - "link": true - }, - "node_modules/@capire/media": { - "resolved": "media", + "resolved": "etc/loggers", "link": true }, "node_modules/@capire/orders": { @@ -2176,12 +2185,6 @@ "dev": true, "license": "MIT" }, - "node_modules/lokijs": { - "version": "1.5.12", - "resolved": "https://registry.npmjs.org/lokijs/-/lokijs-1.5.12.tgz", - "integrity": "sha512-Q5ALD6JiS6xAUWCwX3taQmgwxyveCtIIuL08+ml0nHwT3k0S/GIFJN+Hd38b1qYIMaE5X++iqsqWVksz7SYW+Q==", - "license": "MIT" - }, "node_modules/loupe": { "version": "2.3.7", "resolved": "https://registry.npmjs.org/loupe/-/loupe-2.3.7.tgz", diff --git a/package.json b/package.json index 97d1246f..9511dfd7 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@capire/samples", - "version": "2.1.0", + "version": "3.0.0", "description": "A monorepo with several samples for CAP.", "repository": "https://github.com/sap-samples/cloud-cap-samples.git", "author": "daniel.hutzel@sap.com", @@ -11,13 +11,11 @@ "./bookshop", "./bookstore", "./common", - "./data-viewer", "./fiori", - "./hello", - "./media", "./orders", - "./loggers", - "./reviews" + "./reviews", + "./etc/data-viewer", + "./etc/loggers" ], "devDependencies": { "@cap-js/cds-types": "^0", @@ -31,15 +29,11 @@ }, "scripts": { "bookshop": "cds watch bookshop", - "start": "cds watch fiori", "fiori": "cds watch fiori", - "hello": "cds watch hello", - "media": "cds watch media", "lint": "eslint", "test": "npx jest --silent", "jest": "npx jest --silent", - "mocha": "CDS_TEST_SILENT=y npx mocha", - "test:hello": "cd hello && npm test" + "mocha": "CDS_TEST_SILENT=y npx mocha" }, "mocha": { "recursive": true, diff --git a/samples.md b/samples.md index 5fb85e51..c0edd2dc 100644 --- a/samples.md +++ b/samples.md @@ -6,12 +6,6 @@ Each sub directory essentially is an individual npm package arranged in an [all- ![](etc/samples.drawio.svg) -## [@capire/hello-world](hello) - -- A simplistic [Hello World](https://cap.cloud.sap/docs/get-started/hello-world) service using [CDS](https://cap.cloud.sap/docs/cds/) and [cds.services](https://cap.cloud.sap/docs/node.js/api#services-api). -- [Typescript support](https://cap.cloud.sap/docs/node.js/typescript) - - ## [@capire/bookshop](bookshop) - [Getting Started](https://cap.cloud.sap/docs/get-started/in-a-nutshell) with CAP, briefly introducing: @@ -60,10 +54,10 @@ Each sub directory essentially is an individual npm package arranged in an [all- - [@capire/reviews](reviews) - [@capire/orders](orders) - [@capire/common](common) - - [@capire/data-viewer](data-viewer) + - [@capire/data-viewer](etc/data-viewer) - [The Vue.js app](bookshop/app/vue) imported from `bookshop` is served as well - [The Vue.js app](reviews/app/vue) imported from `reviews` is served as well -- [The Vue.js app](data-viewer/app/data) imported from `data-viewer` is served as well +- [The Vue.js app](etc/data-viewer/app/data) imported from `data-viewer` is served as well - [The Fiori app](orders/app) imported from `orders` is served as well - [OpenAPI export + Swagger UI](https://cap.cloud.sap/docs/advanced/openapi) diff --git a/test/hello-world.test.js b/test/hello-world.test.js deleted file mode 100644 index 1ebdfaf8..00000000 --- a/test/hello-world.test.js +++ /dev/null @@ -1,22 +0,0 @@ -const cds = require('@sap/cds') - -describe('cap/samples - Hello world!', () => { - - const { GET, expect } = cds.test (__dirname+'/../hello') - - it('should say hello with class impl', async () => { - const {data} = await GET `/odata/v4/say/hello(to='world')` - expect(data.value).to.eql('Hello world!') - }) - - it('should say hello with another impl', async () => { - await cds.serve('say').from(cds.model) - .at('/say-again').in(cds.app) - .with(srv => { - srv.on('hello', (req) => `Hello again ${req.data.to}!`) - }) - const {data} = await GET `/say-again/hello(to='world')` - expect(data.value).to.eql('Hello again world!') - }) - -})