📦 @hedystia/better-auth-typeorm
TypeORM adapter for Better Auth - Powerful database integration for your auth system! 🚀
- 🗄️ Database Agnostic: Works with all TypeORM-supported databases (MySQL, PostgreSQL, SQLite, etc.)
- 🔄 CRUD Operations: Full support for create, read, update, and delete operations
- ⚡ Efficient Queries: Built-in pagination, sorting, and filtering support
- 🔒 Secure Operations: Proper transaction handling and error management
- Install the package:
npm install @hedystia/better-auth-typeorm typeorm- Generate TypeORM Entities and Migrations
Before you can use the adapter, you need to generate the necessary entities and migrations for your database. You can do this using the Better Auth CLI:
bunx @better-auth/cli generate
# or
npx @better-auth/cli generateThis command will create the typeorm/entities and typeorm/migrations directories in your project.
- Create your TypeORM DataSource configuration:
import { DataSource } from "typeorm";
import path from "path";
export const dataSource = new DataSource({
type: "mysql",
host: "localhost",
port: 3306,
username: "your_username",
password: "your_password",
database: "your_database",
entities: [path.join(__dirname, "typeorm/entities/**/*.ts")],
migrations: [path.join(__dirname, "typeorm/migrations/**/*.ts")],
migrationsRun: true,
});
await dataSource.initialize();- Set up your Better Auth configuration:
import { betterAuth } from "better-auth";
import { typeormAdapter } from "@hedystia/better-auth-typeorm";
import { organization, twoFactor } from "better-auth/plugins";
import { dataSource } from "./data-source";
export const auth = betterAuth({
database: typeormAdapter(dataSource),
plugins: [organization(), twoFactor()],
});You can customize where entities and migrations are generated by passing options to the adapter:
import { typeormAdapter } from "@hedystia/better-auth-typeorm";
export const auth = betterAuth({
database: typeormAdapter(dataSource, {
outputDir: "./src/database", // Base directory (default: "./typeorm")
migrationsDir: "./db/migrations", // Migrations directory (default: "{outputDir}/migrations")
entitiesDir: "./db/entities" // Entities directory (default: "{outputDir}/entities")
}),
});Options:
outputDir(optional): Base directory for TypeORM files. Default:"./typeorm"migrationsDir(optional): Directory for migration files. Default:"{outputDir}/migrations"entitiesDir(optional): Directory for entity files. Default:"{outputDir}/entities"
Note: If you specify custom directories, make sure to update your DataSource configuration accordingly:
export const dataSource = new DataSource({
type: "mysql",
// ... other config
entities: [path.join(__dirname, "db/entities/**/*.ts")],
migrations: [path.join(__dirname, "db/migrations/**/*.ts")],
migrationsRun: true,
});- Seamless Integration: Direct mapping between Better Auth entities and TypeORM
- Flexible Database Support: Use with any TypeORM-supported database
- Production Ready: Built-in error handling and transaction support
- Performance Optimized: Efficient query building and data transformation
This project is licensed under the MIT License.