@ackplus/nest-seeder 1.1.15 → 1.1.17

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/QUICKSTART.md CHANGED
@@ -1,45 +1,62 @@
1
- # Quick Start Guide - @ackplus/nest-seeder
1
+ # Quick Start - 5 Minutes to Seeding!
2
2
 
3
- Get started with nest-seeder in 5 minutes!
3
+ Get started with `@ackplus/nest-seeder` in just 5 simple steps.
4
4
 
5
- ## 📦 Step 1: Installation
5
+ ## 📦 Installation
6
6
 
7
7
  ```bash
8
8
  npm install @ackplus/nest-seeder @faker-js/faker
9
9
  npm install -D ts-node typescript
10
10
  ```
11
11
 
12
- ## 🏭 Step 2: Create a Factory
12
+ ## Step 1: Create an Entity
13
13
 
14
- Create a file `src/database/factories/user.factory.ts`:
14
+ ```typescript
15
+ // src/entities/user.entity.ts
16
+ import { Entity, PrimaryGeneratedColumn, Column } from 'typeorm';
17
+
18
+ @Entity('users')
19
+ export class User {
20
+ @PrimaryGeneratedColumn()
21
+ id: number;
22
+
23
+ @Column()
24
+ name: string;
25
+
26
+ @Column({ unique: true })
27
+ email: string;
28
+
29
+ @Column({ default: 'user' })
30
+ role: string;
31
+ }
32
+ ```
33
+
34
+ ## Step 2: Create a Factory
15
35
 
16
36
  ```typescript
37
+ // src/factories/user.factory.ts
17
38
  import { Factory } from '@ackplus/nest-seeder';
18
39
 
19
40
  export class UserFactory {
41
+ @Factory((faker) => faker.person.fullName())
42
+ name: string;
43
+
20
44
  @Factory((faker) => faker.internet.email())
21
45
  email: string;
22
46
 
23
- @Factory((faker) => faker.person.firstName())
24
- firstName: string;
25
-
26
- @Factory((faker) => faker.person.lastName())
27
- lastName: string;
28
-
29
- @Factory((faker) => faker.internet.password())
30
- password: string;
47
+ @Factory((faker) => faker.helpers.arrayElement(['admin', 'user', 'guest']))
48
+ role: string;
31
49
  }
32
50
  ```
33
51
 
34
- ## 🌱 Step 3: Create a Seeder
35
-
36
- Create a file `src/database/seeders/user.seeder.ts`:
52
+ ## Step 3: Create a Seeder
37
53
 
38
54
  ```typescript
55
+ // src/seeders/user.seeder.ts
39
56
  import { Injectable } from '@nestjs/common';
40
57
  import { InjectRepository } from '@nestjs/typeorm';
41
58
  import { Repository } from 'typeorm';
42
- import { Seeder, SeederServiceOptions, DataFactory } from '@ackplus/nest-seeder';
59
+ import { Seeder, DataFactory } from '@ackplus/nest-seeder';
43
60
  import { User } from '../entities/user.entity';
44
61
  import { UserFactory } from '../factories/user.factory';
45
62
 
@@ -50,59 +67,28 @@ export class UserSeeder implements Seeder {
50
67
  private readonly userRepository: Repository<User>,
51
68
  ) {}
52
69
 
53
- async seed(options: SeederServiceOptions): Promise<void> {
70
+ async seed(): Promise<void> {
54
71
  const factory = DataFactory.createForClass(UserFactory);
55
72
  const users = factory.generate(10);
56
73
  await this.userRepository.save(users);
57
74
  console.log('✅ Seeded 10 users');
58
75
  }
59
76
 
60
- async drop(options: SeederServiceOptions): Promise<void> {
77
+ async drop(): Promise<void> {
61
78
  await this.userRepository.delete({});
62
79
  }
63
80
  }
64
81
  ```
65
82
 
66
- ## ⚙️ Step 4: Register in Module
67
-
68
- Update your `app.module.ts`:
69
-
70
- ```typescript
71
- import { Module } from '@nestjs/common';
72
- import { TypeOrmModule } from '@nestjs/typeorm';
73
- import { SeederModule } from '@ackplus/nest-seeder';
74
- import { User } from './database/entities/user.entity';
75
- import { UserSeeder } from './database/seeders/user.seeder';
76
-
77
- @Module({
78
- imports: [
79
- TypeOrmModule.forRoot({
80
- type: 'postgres',
81
- host: 'localhost',
82
- port: 5432,
83
- username: 'postgres',
84
- password: 'postgres',
85
- database: 'mydb',
86
- entities: [User],
87
- synchronize: true,
88
- }),
89
- TypeOrmModule.forFeature([User]),
90
- SeederModule.register({
91
- seeders: [UserSeeder],
92
- }),
93
- ],
94
- })
95
- export class AppModule {}
96
- ```
97
-
98
- ## 🖥️ Step 5A: Option 1 - Using CLI (Recommended)
83
+ ## Step 4: Create Seeder Configuration
99
84
 
100
- ### Create config file `src/database/seeder.config.ts`:
85
+ Create `seeder.config.ts` in your **project root**:
101
86
 
102
87
  ```typescript
88
+ // seeder.config.ts (in project root)
103
89
  import { TypeOrmModule } from '@nestjs/typeorm';
104
- import { User } from './entities/user.entity';
105
- import { UserSeeder } from './seeders/user.seeder';
90
+ import { User } from './src/entities/user.entity';
91
+ import { UserSeeder } from './src/seeders/user.seeder';
106
92
 
107
93
  export default {
108
94
  imports: [
@@ -122,92 +108,103 @@ export default {
122
108
  };
123
109
  ```
124
110
 
125
- ### Add script to `package.json`:
111
+ ## Step 5: Add Script & Run
112
+
113
+ Add to `package.json`:
126
114
 
127
115
  ```json
128
116
  {
129
117
  "scripts": {
130
- "seed": "nest-seed -c ./src/database/seeder.config.ts",
131
- "seed:refresh": "nest-seed -c ./src/database/seeder.config.ts --refresh"
118
+ "seed": "nest-seed -c seeder.config.ts",
119
+ "seed:refresh": "nest-seed -c seeder.config.ts --refresh"
132
120
  }
133
121
  }
134
122
  ```
135
123
 
136
- ### Run it:
124
+ Run it:
137
125
 
138
126
  ```bash
139
127
  npm run seed
140
128
  ```
141
129
 
142
- ## 🖥️ Step 5B: Option 2 - Using Script
130
+ **Output:**
131
+ ```
132
+ 🌱 Starting NestJS Seeder...
133
+ 📁 Loading configuration from: seeder.config.ts
134
+ [Nest] Starting Nest application...
135
+ [Nest] TypeOrmModule dependencies initialized
136
+ ✅ Seeded 10 users
137
+ ```
143
138
 
144
- ### Create `src/seed.ts`:
139
+ ## 🎉 Success!
145
140
 
146
- ```typescript
147
- import { NestFactory } from '@nestjs/core';
148
- import { SeederService } from '@ackplus/nest-seeder';
149
- import { AppModule } from './app.module';
150
-
151
- async function bootstrap() {
152
- const app = await NestFactory.createApplicationContext(AppModule);
153
- const seeder = app.get(SeederService);
154
- await seeder.run();
155
- await app.close();
156
- }
141
+ You've successfully seeded your database!
142
+
143
+ ## 📚 Next Steps
144
+
145
+ ### Run with options:
146
+
147
+ ```bash
148
+ # Drop and reseed
149
+ npm run seed:refresh
150
+
151
+ # Run specific seeder
152
+ npm run seed -- --name UserSeeder
153
+
154
+ # With dummy data flag
155
+ npm run seed -- --dummyData
156
+ ```
157
+
158
+ ### Add More Seeders
159
+
160
+ 1. Create more factories and seeders
161
+ 2. Add them to `seeder.config.ts`:
157
162
 
158
- bootstrap();
163
+ ```typescript
164
+ export default {
165
+ imports: [/* ... */],
166
+ seeders: [
167
+ UserSeeder,
168
+ PostSeeder,
169
+ CommentSeeder,
170
+ ],
171
+ };
159
172
  ```
160
173
 
161
- ### Add script to `package.json`:
174
+ ### Watch Mode for Development
175
+
176
+ Add to `package.json`:
162
177
 
163
178
  ```json
164
179
  {
165
180
  "scripts": {
166
- "seed": "ts-node src/seed.ts",
167
- "seed:refresh": "ts-node src/seed.ts --refresh"
181
+ "seed:watch": "nodemon --watch src/seeders --watch src/factories --ext ts --exec nest-seed -c seeder.config.ts"
168
182
  }
169
183
  }
170
184
  ```
171
185
 
172
- ### Run it:
186
+ Run:
173
187
 
174
188
  ```bash
175
- npm run seed
189
+ npm run seed:watch
176
190
  ```
177
191
 
178
- ## 🎉 That's it!
179
-
180
- You've successfully set up nest-seeder!
181
-
182
- ## 📚 Next Steps
183
-
184
- ### Run specific seeders:
185
- ```bash
186
- npm run seed -- --name UserSeeder
187
- ```
188
-
189
- ### Refresh data (drop and reseed):
190
- ```bash
191
- npm run seed:refresh
192
- ```
192
+ Now your database will auto-reseed when you modify seeders or factories!
193
193
 
194
- ### Add more seeders:
195
- 1. Create more factory classes
196
- 2. Create more seeder classes
197
- 3. Add them to your config/module
198
- 4. Run!
194
+ ## 💡 Tips
199
195
 
200
- ### Advanced features:
201
- - Check out the full README.md for advanced examples
202
- - Learn about factory dependencies
203
- - Explore relationship handling
204
- - See transaction examples
196
+ - **Start small**: Begin with one entity, then add more
197
+ - **Use factories**: They make generating data super easy
198
+ - **Order matters**: List seeders in dependency order
199
+ - **Drop method**: Always implement drop() to clear data
200
+ - **Environment variables**: Use them for database config
205
201
 
206
- ## 🆘 Need Help?
202
+ ## 🔗 Resources
207
203
 
208
- - Read the full [README.md](./README.md)
209
- - Check the [examples](./examples) folder
210
- - Open an issue on GitHub
204
+ - [Full Documentation](./README.md)
205
+ - [Examples Directory](./examples/)
206
+ - [GitHub Repository](https://github.com/ackplus/nest-seeder)
211
207
 
212
- Happy Seeding! 🌱
208
+ ---
213
209
 
210
+ Ready to seed! 🌱