feat: Adds script to generate database seeded values and removes old mock storage.
This commit is contained in:
49
Sources/App/SeedCommand.swift
Normal file
49
Sources/App/SeedCommand.swift
Normal file
@@ -0,0 +1,49 @@
|
||||
#if DEBUG
|
||||
import DatabaseClientLive
|
||||
import Dependencies
|
||||
import FluentSQLiteDriver
|
||||
import SharedModels
|
||||
import Vapor
|
||||
|
||||
struct SeedCommand: AsyncCommand {
|
||||
|
||||
struct Signature: CommandSignature {}
|
||||
|
||||
var help: String {
|
||||
"Generate random seed database."
|
||||
}
|
||||
|
||||
func run(using context: CommandContext, signature: Signature) async throws {
|
||||
let database = DatabaseClient.live(database: context.application.db(.sqlite))
|
||||
|
||||
var users: [User] = []
|
||||
var employees: [Employee] = []
|
||||
var vendors: [Vendor] = []
|
||||
var vendorBranches: [VendorBranch] = []
|
||||
|
||||
for user in User.Create.generateMocks() {
|
||||
let created = try await database.users.create(user)
|
||||
users.append(created)
|
||||
}
|
||||
|
||||
for employee in Employee.Create.generateMocks() {
|
||||
let created = try await database.employees.create(employee)
|
||||
employees.append(created)
|
||||
}
|
||||
|
||||
for vendor in Vendor.Create.generateMocks() {
|
||||
let created = try await database.vendors.create(vendor)
|
||||
vendors.append(created)
|
||||
}
|
||||
|
||||
for branch in VendorBranch.Create.generateMocks(vendors: vendors) {
|
||||
let created = try await database.vendorBranches.create(branch)
|
||||
vendorBranches.append(created)
|
||||
}
|
||||
|
||||
for purchaseOrder in PurchaseOrder.Create.generateMocks(employees: employees, vendorBranches: vendorBranches) {
|
||||
_ = try await database.purchaseOrders.create(purchaseOrder, users.randomElement()!.id)
|
||||
}
|
||||
}
|
||||
}
|
||||
#endif
|
||||
@@ -30,7 +30,8 @@ public func configure(_ app: Application) async throws {
|
||||
|
||||
switch app.environment {
|
||||
case .production, .development:
|
||||
app.databases.use(DatabaseConfigurationFactory.sqlite(.file("db.sqlite")), as: .sqlite)
|
||||
let dbFileName = Environment.get("SQLITE_FILENAME") ?? "db.sqlite"
|
||||
app.databases.use(DatabaseConfigurationFactory.sqlite(.file(dbFileName)), as: .sqlite)
|
||||
default:
|
||||
app.databases.use(DatabaseConfigurationFactory.sqlite(.memory), as: .sqlite)
|
||||
}
|
||||
@@ -48,5 +49,6 @@ public func configure(_ app: Application) async throws {
|
||||
|
||||
if app.environment != .production {
|
||||
try await app.autoMigrate()
|
||||
app.asyncCommands.use(SeedCommand(), as: "seed")
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user