@remix-run/data-table-mysql
v0.1.0
Published
MySQL adapter for @remix-run/data-table
Downloads
2,576
Readme
data-table-mysql
MySQL adapter for remix/data-table.
Use this package when you want data-table APIs backed by mysql2.
Features
- Native
mysql2Integration: Works withmysql2/promiseconnection pools - Full
data-tableAPI Support: Queries, relations, writes, and transactions - MySQL Capabilities Enabled By Default:
returning: falsesavepoints: trueupsert: true
Installation
npm i remix mysql2Usage
import { createPool } from 'mysql2/promise'
import { createDatabase } from 'remix/data-table'
import { createMysqlDatabaseAdapter } from 'remix/data-table-mysql'
let pool = createPool(process.env.DATABASE_URL as string)
let db = createDatabase(createMysqlDatabaseAdapter(pool))Use db.query(...), relation loading, and transactions from remix/data-table.
Adapter Capabilities
data-table-mysql reports this capability set by default:
returning: falsesavepoints: trueupsert: true
Advanced Usage
Capability Overrides For Testing
Capability overrides are mainly for tests where you want to force or disable specific behavior checks. In production, keep defaults so adapter behavior matches MySQL behavior.
import { createMysqlDatabaseAdapter } from 'remix/data-table-mysql'
let adapter = createMysqlDatabaseAdapter(pool, {
capabilities: {
upsert: false,
},
})returning On MySQL
MySQL does not natively support SQL RETURNING. In this adapter, using returning on write
operations throws DataTableQueryError.
Use write metadata (affectedRows, insertId) on MySQL, or switch adapters when returned rows
are required.
import { DataTableQueryError } from 'remix/data-table'
try {
await db
.query(Accounts)
.insert({ email: '[email protected]', status: 'active' }, { returning: ['id'] })
} catch (error) {
if (error instanceof DataTableQueryError) {
// insert() returning is not supported by this adapter
}
}Related Packages
data-table- Core query/relations APIdata-schema- Schema definitions and validationdata-table-postgres- PostgreSQL adapterdata-table-sqlite- SQLite adapter
License
See LICENSE
