@gnx-utilities/models
v0.2.46
Published
Generic models is a library that allows you to create models for sequelize, mongoose and typegoose in a generic way, without having to write the same code over and over again.
Downloads
7
Maintainers
Readme
📝 Generics Models
Generic models is a library that allows you to create models to manage generics repository, this library is based on the Sequelizer library and also in Typegoose.
📦 Installation
npm install @gnx-utilities/models
pnpm add @gnx-utilities/models
yarn add @gnx-utilities/models
bun add @gnx-utilities/models
📖 Usage
Sequelize
import { SequelizeBaseEntity } from '@gnx-utilities/models'
import { DataTypes, Sequelize } from 'sequelize'
import { SequelizeService } from '@gnx-utilities/core'
export const sequelize = new Sequelize('test', 'postgres', 'root', {
host: 'localhost',
dialect: 'postgres'
})
export class User extends SequelizeBaseEntity {
declare firstName: string
declare lastName: string
}
User.init(
{
firstName: { type: DataTypes.STRING },
lastName: { type: DataTypes.STRING }
},
{ sequelize, modelName: 'person' }
)
export class UserService extends SequelizeService<User> {
constructor () {
super(User)
}
}
const userService = new UserService();
const user = await userService.create({ entity: { firstName: 'John', lastName: 'Doe' } });
console.log(user.firstName); // John
Typegoose
[!Warning] Typegoose needs some configuration to work properly, fallow the example below to configure it.
[!Important] On prop decorator you need to add the type of the property, if you don't do this, the library will not work properly.
import { TypegooseService } from '@gnx-utilities/core';
import { getModelForClass, prop } from '@typegoose/typegoose'
import { TypegooseBaseEntity } from '@gnx-utilities/models'
export class User extends TypegooseBaseEntity {
@prop({ type: String })
declare firstName: string
@prop({ type: String })
declare lastName: string
}
export const UserModel = getModelForClass(User)
export class UserService extends TypegooseService<User> {
constructor () {
super(UserModel)
}
}
const userService = new UserService();
const user = await userService.create({ entity: { firstName: 'John', lastName: 'Doe' } });
console.log(user.firstName); // John