Skip to content

brettscott/workers-mysql-client

 
 

Repository files navigation

Cloudflare Workers MySQL Client

Intro

Fork from @nicgene/workers-mysql-client.

The script uses the MySQL driver from Deno and produces a JavaScript (TypeScript) version to be used in workers (eg Cloudflare Workers).

Changes

  • Updated dependencies.
  • Increased documentation.

Create a working MySQL driver for Cloudflare Worker

  1. Install Deno

Instructions

  1. Build
yarn install
yarn build
  1. Remove top-level await by wrapping with an async. Search for "await setup" in mysql.js.

Broken:

await setup(DEFAULT_CONFIG)
var mod = await (async function () {
  return {
    LogLevels,
    Logger,
    LoggerConfig,
    handlers,
    getLogger,
    debug,
    info,
    warning,
    error,
    critical,
    setup,
  }
})()
var logger = mod.getLogger()

Fixed:

let mod
let logger
;(async () => {
  try {
    await setup(DEFAULT_CONFIG)
  } catch (err) {
    console.error(err)
  }
  mod = await (async function () {
    return {
      LogLevels,
      Logger,
      LoggerConfig,
      handlers,
      getLogger,
      debug,
      info,
      warning,
      error,
      critical,
      setup,
    }
  })()
  logger = mod.getLogger()
})()
  1. Comment out second case 18. Search for "case 18" in mysql.js.

Broken:

case 18:
return new Date(val)

Fixed:

// case 18:
//   return new Date(val)
  1. Copy build/mysql.js to your project.

  2. Create TypeScript type definition in your project. Incomplete:

export type MySQLClient = {
  execute(str: string): Promise<MySQLResponse>
  query<T>(str: string, params: unknown[]): Promise<T>
}

export type MySQLResponse = {
  affectedRows: number
  lastInsertId: number
}

Example mysql.js

A copy of mysql.js is provided.

Feedback

Raise an issue if there's a better way :)


Original

This is an experimental module.

Heavily based on bubblydoo/cloudflare-workers-postgres-client .

npm i @nicgene/workers-mysql-client
# or
yarn add @nicgene/workers-mysql-client

About

Connect to a MySQL database from a Cloudflare Worker, using Cloudflare Tunnel

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • JavaScript 87.5%
  • TypeScript 12.2%
  • Shell 0.3%