Skip to main content

MySQL Database Actions

Note: Database Action tags are expected to follow the format: databaseTag:dbActionTag. This convention ensures clarity and prevents conflicts across different databases and their actions.

Action TypeSQL Query Type
ReadSELECT
CreateINSERT
UpdateUPDATE
DeleteDELETE
AggregateSELECT (for aggregations)

Data Validation

To define data validation for each datapoint you can follow the pattern

'{{key:type:minlength:maxlength}}'

All fields asides the key are optional

e.g

'{{key}}' is valid

When the non key values are not defined

The default values are

  • type - (string)
  • minlength - (1) one
  • maxlength - (0) unlimited

Available DataTypes Options

The following DataTypes are available for defining feature inputs:

TypeDescription
STRINGFree-form text
NOSPACES_STRINGString without spaces
EMAIL_STRINGString in a valid email format
DATE _STRINGString in a valid date format
NUMBER_STRINGString representing a number
INTEGERInteger value
DATEDate value
FLOATFloating-point number
DOUBLEDouble-precision floating-point number
UUIDUniversally Unique Identifier (UUID)
ARRAYArray of items
OBJECTJSON object
BOOLEANBoolean value (true or false)

Creating MySQL Database Actions

Create Operation

const data: IProductDatabaseAction = {
tag: 'mysql-db-tag:create-user',
tableName: 'users',
type: DatabaseActionTypes.CREATE,
template: `
INSERT INTO users (username, firstname, lastname, date_of_birth, address, occupation)
VALUES ('{{username:${DataTypes.NOSPACES_STRING}:3:20}}', '{{firstname:${DataTypes.STRING}}}', '{{lastname}}', '{{dateOfBirth}}', '{{address}}', '{{occupation}}')
`
};

const action = await ductape.product.databases.actions.create(data);

Read Operation

const data: IProductDatabaseAction = {
tag: 'mysql-db-tag:read-user',
tableName: 'users',
type: DatabaseActionTypes.READ,
template: `
SELECT * FROM users WHERE username = '{{username}}'
`
};

const action = await ductape.product.databases.actions.create(data);

Update Operation

const data: IProductDatabaseAction = {
tag: 'mysql-db-tag:update-user',
tableName: 'users',
type: DatabaseActionTypes.UPDATE,
template: `
UPDATE users
SET firstname = '{{firstname}}', lastname = '{{lastname}}', address = '{{address}}'
WHERE username = '{{username}}'
`
};

const action = await ductape.product.databases.actions.create(data);

Delete Operation

const data: IProductDatabaseAction = {
tag: 'mysql-db-tag:delete-user',
tableName: 'users',
type: DatabaseActionTypes.DELETE,
template: `
DELETE FROM users WHERE username = '{{username}}'
`
};

const action = await ductape.product.databases.actions.create(data);