-
-
Notifications
You must be signed in to change notification settings - Fork 4
Expand file tree
/
Copy pathDbSeedCommand.imba
More file actions
75 lines (53 loc) · 1.75 KB
/
DbSeedCommand.imba
File metadata and controls
75 lines (53 loc) · 1.75 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
import { Prop, Output } from '@formidablejs/console'
import { isArray } from '../../../Support/Helpers'
import { Command } from '../Command'
import { join } from 'path'
import { existsSync } from 'fs-extra'
export class DbSeedCommand < Command
get isTS
const appPackage = join(process.cwd!, 'package.json')
if !existsSync(appPackage)
return false
const language = require(appPackage).language || 'imba'
language.toLowerCase! == 'typescript'
get signature
'db:seed {?--seeder}'
get props
{
seeder: Prop.string!.default("DatabaseSeeder.{isTS ? 'ts' : 'js'}").description('The specific seeder to run. If not provided, all seeders will be run')
}
get description
'Seed the database with records'
def defaultSeeder seeder\string
const seederDirectory = join(process.cwd!, app.config.get('database.seeders', 'database/seeders'))
const seederFile = join(seederDirectory, seeder)
if existsSync(seederFile)
return seeder
this.error "Seeder file {seeder} does not exist"
def handle
if !self.app.console![Symbol.for('#internal')]
await self.shouldRun!
self.usingEnv!
if isTS
require('ts-node').register({
transpileOnly: true,
compilerOptions: {
module: 'commonjs',
target: 'ESNext',
moduleResolution: 'node',
esModuleInterop: true,
},
})
const results = await app.seeder!.run({
specific: defaultSeeder(self.option('seeder'))
})
if results === false then return self.message 'error', 'Seeding failed'
if isArray(results)
const root = process.cwd!
Output.group { newLine: false }, do
for seeder in results[0]
self.message 'info', "Seeder \x1b[1m[{seeder.substring(root.length + 1)}]\x1b[0m ran successfully."
exit!
return
console.error results
self.exit!