@hedystia/better-auth-typeorm
v0.7.1
Published
<div align="center"> <p> <strong>๐ฆ @hedystia/better-auth-typeorm</strong> </p>
Downloads
3,681
Maintainers
Readme
๐ Features
- ๐๏ธ 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
- ๐๏ธ Soft Delete: Built-in soft delete support
๐ Quick Start
- 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()],
});โ๏ธ Configuration
Custom Output Directories
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,
});Enable Soft Delete
You can enable soft delete for entities by passing list of entities that should use soft delete by passing softDeleteEnabledEntities option to the adapter:
import { typeormAdapter } from "@hedystia/better-auth-typeorm";
export const auth = betterAuth({
database: typeormAdapter(dataSource, {
softDeleteEnabledEntities: ["user", "member"],
}),
});Options:
softDeleteEnabledEntities(optional): Enable soft delete for entities. Default: undefined
Note:
- If you enable soft delete, you will need to add the
@DeleteDateColumndecorator with column namedeletedAtto your entities. - Entities that are not in the
softDeleteEnabledEntitieslist will not use soft delete.
๐ Why use this adapter?
- 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
๐ License
This project is licensed under the MIT License.
