64 lines
1.9 KiB
Swift
64 lines
1.9 KiB
Swift
#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] = []
|
|
|
|
let adminUser = User.Create(
|
|
username: Environment.get("ADMIN_USERNAME") ?? "admin",
|
|
email: Environment.get("ADMIN_EMAIL") ?? "admin@development.com",
|
|
password: Environment.get("ADMIN_PASSWORD") ?? "super-secret",
|
|
confirmPassword: Environment.get("ADMIN_PASSWORD") ?? "super-secret"
|
|
)
|
|
|
|
_ = try await database.users.create(adminUser)
|
|
|
|
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.CreateIntermediate.generateMocks(
|
|
employees: employees,
|
|
vendorBranches: vendorBranches
|
|
) {
|
|
_ = try await database.purchaseOrders.create(
|
|
purchaseOrder.toCreate(createdByID: users.randomElement()!.id)
|
|
)
|
|
}
|
|
}
|
|
}
|
|
#endif
|