Technology Blogs by Members
Explore a vibrant mix of technical expertise, industry insights, and tech buzz in member blogs covering SAP products, technology, and events. Get in the mix!
cancel
Showing results for 
Search instead for 
Did you mean: 
vobu
Active Contributor
For the SAP Cloud Application Programming Model (CAP), SAP HANA (cloud) is the only officially supported first-class citizen for storing db artifacts in production.

At the same time, CAP is beautiful.


cap overview architecture


Because its’ core is open, avoids tech-stack lock-in, behaves non-intrusive and is platform agnostic: all key characteristics for enabling the framework to run ouside SAPverse.

Given that SAP HANA cloud is only available in SAP world (more specifically, in SAP Cloud Platform, SCP SAP BTP), there’s a contradiction to resolve - how do we get CAP to run outside of SAP?

cds-pg


On the persistence level, extending CAP to support a popular Open Source database is the first step to proverbial shake off SAP-inflicted technology restraints -
and the CAP community has taken the leap and created a PostgreSQL storage adapter named "cds-pg" (cds == "core data services", pg == PostgreSQL).

cds-pg extends the official cds.Service-API by wrapping node-pg, a PostgreSQL client for Node.js.

The project has been set up so that all the groundwork is layed out:
the adapter fits in with @sap/cds (the Node.js module of CAP),
is ready to be included in CAP-projects and -most importantly-
is equiped code-wise so that anybody can contribute features to cds-pg easily.

contributing features


cds-pg at the time of this writing is in an alpha state. It supports basic SELECT statements mapping to OData GET for entitysets and single entities.

But the code base provides a standalone dockerized PostgreSQL server, an example CAP project connecting to it and several tests for yet missing features plus a detailed description of how to set up the development environment - so it is literally a matter of minutes (!) for anyone to set up shop and contribute to cds-pg.

We have even put in a SQLite-based variant of the example CAP project (npm run test:as-sqlite) so you can compare results between an SQLite- and the cds-pg-based persistence adapter ?

the road ahead


make no mistake: cds-pg is nothing SAP as a company will officially support any time soon.

But it has the full consulting support of the CAP core development team, following the notion of striving towards making CAP itself open-source! ?

So it is up to us as the CAP community ?‍♀️??‍♂️ to pick up the playball, drive it across the playfield and score the metaphoric goal of getting all’em CRUD features into cds-pg - so we can use CAP with PostgreSQL in addition to SAP HANA-cloud, allowing productive applications to run on additional platforms than SCP.

So, calling out to you, the CAP community: fork, code, pull-request cds-pg. Lots!!!
(tech tl;dr for this:
# first, fork the repo: https://github.com/sapmentors/cds-pg 
git clone https://github.com/<you>/cds-pg
cd cds-pg
nvm use # lts/erbium
npm i
npm run test:pg:up-nobg # dockerized postgres
./node_modules/.bin/jest --watch # morph into TDD mode
code . # open vs code
npm run test:as-sqlite # start sqlite-based version for result comparison
# pick some test.todo(...) or test.skip(...) from __tests__/odata.js
# and implement functionality
...
# head over to gh for creating a PR # or use git request-pull from the cmd line 🙂

)

Authors













Volker is the self-proclaimed "Head of bar and beverage consumption on the CAP Open Sourcing party".
Gregor in many aspects is the voice of the CAP community and a CAP earlier-than-early adopter.

 
2 Comments
Labels in this area