@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()is deprecated and throws, because MySQL views cannot read session variables;dropTenantView()andsetTenantSession()remain - 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.