Skip to content

Bombastickj/nuxt-easy-typeorm

Repository files navigation

Nuxt EasyTypeORM

npm version npm downloads License Nuxt

This Nuxt module is aimed for a seamless integration of TypeORM.

Installation

npx nuxi@latest module add nuxt-easy-typeorm

Configuration

In your Nuxt project, configure the module options inside nuxt.config.js:

export default defineNuxtConfig({
  modules: ['nuxt-easy-typeorm'],
  typeorm: {
    directory: 'my-typeorm-folder', // optional: defaults to 'typeorm' if not specified
  }
})

Setup

  1. Create the typeorm Directory: Inside the root of your project, create a typeorm directory (or the directory specified in your config). This is where you'll organize TypeORM-related files, such as entities and migrations.
  2. Organize with Subdirectories: To keep the folder organized, create subdirectories like entities for entity files and migrations for migration files.
  3. Define a Data Source: Create a file (e.g., useDatabase.ts) in the typeorm directory. Use the provided defineDataSource function to configure your TypeORM data source.
export const useDatabase = defineDataSource({
  type: 'sqlite',
  database: './typeorm/database.sqlite',
  entities: [],
  migrations: [],
  synchronize: true,
})

Note

You can add all entities and migrations here without additional imports.

Usage

After setting up, the data source will be auto-imported and ready for use in your Nitro routes. Here’s a simple example of using useDatabase to interact with an entity called User.

Example: Fetching Users

// server/api/user/list/index.get.ts
export default defineEventHandler(async (event) => {
  const database = await useDatabase()
  const UserRepository = database.getRepository(User)
  return UserRepository.find()
})

In this example, useDatabase() initializes the database connection and retrieves the repository for the User entity, allowing you to perform operations like .find().

Contribution

Local development
# Install dependencies
npm install

# Generate type stubs
npm run dev:prepare

# Develop with the playground
npm run dev

# Build the playground
npm run dev:build

# Run ESLint
npm run lint

# Run Vitest
npm run test
npm run test:watch

# Release new version
npm run release