Skip to content

MySQL(MariaDB) adapter for CAP NodeJS Runtime

License

Notifications You must be signed in to change notification settings

Soontao/cds-mysql

Folders and files

NameName
Last commit message
Last commit date
Aug 25, 2023
Mar 11, 2025
Mar 22, 2024
Jan 25, 2023
Jan 30, 2023
Jun 24, 2023
May 4, 2024
Mar 30, 2024
May 4, 2024
Feb 9, 2024
Jul 15, 2021
Mar 5, 2022
Jan 31, 2023
Mar 30, 2024
Mar 30, 2024
Mar 3, 2022
May 4, 2024
Feb 8, 2021
Mar 30, 2024
Jun 24, 2023
Dec 22, 2023
Jul 9, 2023
Dec 6, 2022
Sep 29, 2023
Feb 17, 2023
Mar 30, 2024
Mar 25, 2025
Jun 30, 2022
Mar 31, 2023
Jun 24, 2022
Feb 8, 2021

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