@stratum-hq/mysql
@stratum-hq/mysql adds multi-tenant row isolation for applications using MySQL. Three isolation strategies are available: shared table, table-per-tenant, and database-per-tenant. Includes integrations for TypeORM, Knex, and Sequelize.
Installation
Section titled “Installation”npm install @stratum-hq/mysql mysql2Quick Start
Section titled “Quick Start”import mysql from "mysql2/promise";import { MysqlSharedAdapter } from "@stratum-hq/mysql";
const pool = mysql.createPool(process.env.MYSQL_URL);const adapter = new MysqlSharedAdapter({ pool, databaseName: "myapp" });
// Structured methods auto-inject tenant_idconst users = await adapter.scopedSelect("acme", "users");await adapter.scopedInsert("acme", "users", { name: "Alice" });Features
Section titled “Features”- Three isolation strategies – shared table, table-per-tenant, database-per-tenant
- Structured query methods –
scopedSelect,scopedInsert,scopedUpdate,scopedDeletewith automatic tenant_id injection - TypeORM subscriber – auto-injects tenant_id on insert via AsyncLocalStorage
- Knex helper –
withTenantScope()wraps query builders with automatic WHERE clause - Sequelize adapter –
withMysqlTenantScope()with try/finally session variable cleanup - MySQL View utilities –
createTenantView(),dropTenantView(),setTenantSession()for view-based isolation - GDPR purge –
purgeTenantData()across all three strategies - LRU pool manager – active query tracking, idle timeout, configurable eviction
Full Guide
Section titled “Full Guide”See the MySQL Multi-Tenancy guide for strategy selection, ORM integration details, security considerations, and performance tuning.
