Skip to main content

Developer README for the mysql adaptor

Source: https://github.com/OpenFn/adaptors/tree/main/packages/mysql

Language MySQL

Language Pack for building expressions and operations to run MySQL queries.

See src/Adaptor.js for the full list of available helper functions including upsert(...).

Documentation

sample configuration

{
"host": "some-host-url.compute-1.amazonaws.com",
"port": "3306",
"database": "wouldntyouliketoknow",
"user": "me",
"password": "noway"
}

Execute a query

Execute an sql query with the node mysql package.

query({
sql: state => {
return `select * from ${state.data.table} where id = ?;`;
},
timeout: 4000,
values: ['007'],
});

Execute a sql query

This function takes either a string or a function that takes states and returns a string.

sqlString(state => {
return (
`INSERT INTO untitled_table (name, the_geom) VALUES ('` +
state.data.version +
`', ` +
dataValue('form.Choix_tache')(state) +
`)`
);
});

Insert a single record

This function is used to insert a single record in a MySQL database.

insert(
'some_table',
fields(
field('firstname', dataValue('form.patient_firstname')),
field('lastname', dataValue('form.patient_lastname'))
)
);

Insert or update a single record

This function is used to insert a single record in a MySQL database or update it if there is a match.

upsert(
'some_table',
fields(
field('firstname', dataValue('form.patient_firstname')),
field('lastname', dataValue('form.patient_lastname'))
)
);

Upsert many records

This function allows the upsert of a set of records inside a table all at once.

upsertMany(
'users', // the DB table
[
{ name: 'one', email: 'one@openfn.org' },
{ name: 'two', email: 'two@openfn.org' },
]
);

or

upsertMany('users', state =>
state.data.users.map(user => {
name: user['name'],
email: user['email']
})
);

Development

Clone the adaptors monorepo. Follow the Getting Started guide inside to get set up.

Run tests using pnpm run test or pnpm run test:watch

Build the project using pnpm build.

To just build the docs run pnpm build docs