@aditama-labs/nest-autocrud
v0.6.5
Published
NestJS Auto CRUD Library
Readme
Status
This project is still in development and not ready for production, it's not even ready to install yet. Calling for contributors to help this project.
Description
Nest Auto CRUD is a library that provides a set of modules, decorator, service, and many more to reduce the boilerplate code.
I will make the API backward compatible, so you don't need to worry about upgrading the version
Roadmap
Basic Thing
- Custom body mapping
- Custom validation
Advanced Support
- Generic support for Prisma ORM #5273
Installation
$ npm install @aditama-labs/nest-autocrudKnown Issue for Prisma User
Default Generated Schema ( First Setup Project )
Please remove output from your first generated prisma schema or you can't running the backend because nest-autocrud cannot find it, so instead it will stored in node_modules.
generator client {
provider = "prisma-client-js"
// This `output` property should be removed
output = "../generated/prisma"
}This is fixed version of the schema
generator client {
provider = "prisma-client-js"
}In summary you must delete output property from the schema
Example
Environment Variable
// Yes, either Prisma or TypeORM just need this single line of ENV
// PostgreSQL Example
DATABASE_URL =
'postgresql://johndoe:randompassword@localhost:5432/mydb?schema=public';
// MySQL Example
DATABASE_URL = 'mysql://johndoe:randompassword@localhost:3306/mydb';Prisma ORM
// Your Module
@Module({
imports: [
// This module will automatically map your model to the controller
PrismaModule.forRoot({
delegate: (prisma: PrismaClient) => prisma.user,
}),
],
controllers: [AppController],
providers: [],
})
export class AppModule {}
// Your Controller
@Controller('examples')
export class AppController extends SkeletonCRUDController {
// Yes, no need to write anything here
}TypeORM
// Your Entity
@Entity('account')
export class UserEntity {
@PrimaryGeneratedColumn('uuid')
id: string;
@Column({ type: String })
username: string;
@Column({ type: String })
name: string;
}
// Your Module
@Module({
// This module will automatically map your model to the controller
imports: [
TypeORMModule.forRoot<UserEntity>({
entity: UserEntity,
}),
],
controllers: [AppController],
providers: [],
})
export class AppModule {}
// Your Controller
@Controller('examples')
export class AppController extends SkeletonCRUDController {
// Yes, no need to write anything here
}Output in Terminal
// Expected Output ( As you can see the API is automatically mapped and generated )
[Nest] 125875 - 10/30/2024, 10:57:56 PM LOG [NestFactory] Starting Nest application...
[Nest] 125875 - 10/30/2024, 10:57:56 PM LOG [InstanceLoader] PrismaModule dependencies initialized +14ms
[Nest] 125875 - 10/30/2024, 10:57:56 PM LOG [InstanceLoader] AppModule dependencies initialized +0ms
[Nest] 125875 - 10/30/2024, 10:57:56 PM LOG [RoutesResolver] AppController {/examples}: +3ms
[Nest] 125875 - 10/30/2024, 10:57:56 PM LOG [RouterExplorer] Mapped {/examples, POST} route +3ms
[Nest] 125875 - 10/30/2024, 10:57:56 PM LOG [RouterExplorer] Mapped {/examples/:id, DELETE} route +1ms
[Nest] 125875 - 10/30/2024, 10:57:56 PM LOG [RouterExplorer] Mapped {/examples/list, GET} route +0ms
[Nest] 125875 - 10/30/2024, 10:57:56 PM LOG [RouterExplorer] Mapped {/examples, GET} route +1ms
[Nest] 125875 - 10/30/2024, 10:57:56 PM LOG [RouterExplorer] Mapped {/examples/:id, GET} route +0ms
[Nest] 125875 - 10/30/2024, 10:57:56 PM LOG [RouterExplorer] Mapped {/examples/:id, PATCH} route +0ms
[Nest] 125875 - 10/30/2024, 10:57:56 PM LOG [NestApplication] Nest application successfully started +148msSupport
Nest AutoCRUD is an MIT-licensed open source project.
Stay in touch
- Author - Supan Adit Pratama
- Website - https://supanadit.com
License
Nest AutoCRUD is MIT licensed
