A NestJS library that provides a wrapper around the `sequelize` and `sequelize-typescript` libraries for MySQL databases.
This library provides an easy-to-use interface for working with MySQL databases in NestJS applications. It is built on top of the popular sequelize
and sequelize-typescript
libraries, and provides a set of convenient abstractions for working with these libraries.
To install this library, use either npm
or yarn
:
npm install @tdi-mc/mysql
# or
yarn add @tdi-mc/mysql
To use this library, you must first provide the necessary configuration. This can be done by creating a config.yml file in your application's root directory, with the following content:
mysql:
host: localhost
port: 3306
user: my_user
password: my_pass
database: my_database
Replace the values with your actual database connection information.
Once you have provided the configuration, you can create a MysqlModule in your NestJS application:
import { CoreModule, Module } from '@tdi-mc/core';
import { MysqlModule } from '@tdi-mc/mysql';
@Module({
imports: [CoreModule, MysqlModule],
})
export class AppModule {}
You can then use the MysqlService to interact with the database:
import { Injectable } from '@tdi-mc/core';
import { MysqlService } from '@tdi-mc/mysql';
@Injectable()
export class UserService {
constructor(private readonly mysqlService: MysqlService) {}
async getUsers() {
const users = await this.mysqlService.getModel(UserSchema).findAll();
return users;
}
}
You can define a model using @tdi-mc/mysql
(based on interface of sequelize-typescript
):
import { Table, Column, Model } from '@tdi-mc/mysql';
@Table
export class UserSchema extends Model<UserSchema> {
@Column
name: string;
@Column
email: string;
}
You can create a repository for your model by extending the MysqlRepository class and providing the model type as a generic argument:
import { Injectable } from '@nestjs/common';
import { MysqlRepository } from '@tdi-mc/mysql';
import { UserSchema } from './user.model';
@Injectable()
export class UserRepository extends MysqlRepository<UserSchema> {}
You can then use the repository in your service:
import { Injectable } from '@nestjs/common';
import { UserRepository } from './user.repository';
@Injectable()
export class UserService {
constructor(private readonly userRepository: UserRepository) {}
async getUsers() {
const users = await this.userRepository.findAll();
return users;
}
}
Contributions to @tdi-mc/mysql
are welcome. If you would like to contribute, please fork the repository, make your changes, and submit a pull request.
Please make sure to update tests as appropriate.