Skip to content

Soontao/cds-mysql

Repository files navigation

cds mysql

npm version node-test database-test

codecov Security Rating Technical Debt Vulnerabilities

MySQL/MariaDB adapter for CAP Framework, this module is heavily inspired by the cds-pg module.

Setup

firstly, install npm packages

npm i cds-mysql mysql2

setup the mysql database driver for cds -> edit the package.json > cds node (or .cdsrc.json)

{
  "requires": {
    "db": {
      "kind": "mysql"
    }
  }
}

create an .env file and put that into your local CDS project, then fill the database credential

CDS_REQUIRES_DB_CREDENTIALS_HOST=127.0.0.1
CDS_REQUIRES_DB_CREDENTIALS_PORT=3306
CDS_REQUIRES_DB_CREDENTIALS_DATABASE= # db name
CDS_REQUIRES_DB_CREDENTIALS_USER= # db user
CDS_REQUIRES_DB_CREDENTIALS_PASSWORD= # db user pwd!

now, start the cds server (npx cds-serve), everything is ready!

Tip

read more about how to config database credential.

Tip

read more about how to setup database user.


in addition, please check cap-mysql-sflight to get the mysql version of official cap-sflight example, and it works well.

please read the full long version Advanced Documentation to get more technical details.

Feature and RoadMap

  • fundamental INSERT/UPDATE/DELETE/SELECT query support
    • support UPSERT by INSERT ... ON DUPLICATE KEY UPDATE statement
  • deep insert for association/composition
    • deep create/update/query/delete test case
  • fiori draft support
    • draftPrepare/draftEdit/draftActivate test case
  • temporal aspect, but not support time-travel query
  • incrementID auto incremental key aspect
  • preDelivery CSV aspect
    • migrate CSV on-demand (with option)
    • CSV migration with hash check
    • care entity dependencies - the order of CSV import
  • full text search
  • schema migration optimization (ignore drop in some case)
    • ignore column length reduce and with warning
    • model version, only incremental migration - transparent migration
  • @Core.Media attachment support
  • localized data
  • multi tenancy
    • deploy model on-fly
    • create database on-demand
      • user permission check
    • experimental @sap/cds-mtxs support -> document - behavior maybe changed later.
      • extensibility (pull/push)
  • $expand navigation
  • $filter with canonical functions (concat/contains/substring)
  • test with mariadb 10, mysql 5/8
  • initial data provision by CSV
    • better migration type/column/name adaption
  • mysql index
    • better error for not supported elements
  • automatically schema sync (when connection pool provision)
  • SELECT FOR UPDATE/LOCK IN SHARE MODE
    • NOWAIT support
    • SKIP LOCKED support
  • better E2E document/sample - cap-mysql-sflight
  • adapt new cds-dbs layer
  • real stream adoption for binary