feat: Moves api controller to it's own module.
This commit is contained in:
55
Sources/App/Commands/GenerateAdminUserCommand.swift
Normal file
55
Sources/App/Commands/GenerateAdminUserCommand.swift
Normal file
@@ -0,0 +1,55 @@
|
||||
import DatabaseClientLive
|
||||
import Dependencies
|
||||
import FluentSQLiteDriver
|
||||
import SharedModels
|
||||
import Vapor
|
||||
|
||||
struct GenerateAdminUserCommand: AsyncCommand {
|
||||
|
||||
struct Signature: CommandSignature {
|
||||
@Option(name: "username", short: "u")
|
||||
var userame: String?
|
||||
|
||||
@Option(name: "email", short: "e")
|
||||
var email: String?
|
||||
|
||||
@Option(name: "password", short: "p")
|
||||
var password: String?
|
||||
|
||||
}
|
||||
|
||||
var help: String {
|
||||
"Generate admin user in the database."
|
||||
}
|
||||
|
||||
func run(using context: CommandContext, signature: Signature) async throws {
|
||||
let database = DatabaseClient.live(database: context.application.db(.sqlite))
|
||||
|
||||
let username = signature.userame ?? Environment.get("ADMIN_USERNAME")
|
||||
guard let username else {
|
||||
throw Abort(.badRequest, reason: "Username not provided or found in the environment.")
|
||||
}
|
||||
|
||||
let email = signature.email ?? Environment.get("ADMIN_EMAIL")
|
||||
guard let email else {
|
||||
throw Abort(.badRequest, reason: "Email not provided or found in the environment.")
|
||||
}
|
||||
|
||||
let password = signature.password ?? Environment.get("ADMIN_PASSWORD")
|
||||
guard let password else {
|
||||
throw Abort(.badRequest, reason: "Password not provided or found in the environment.")
|
||||
}
|
||||
|
||||
let adminUser = User.Create(
|
||||
username: username,
|
||||
email: email,
|
||||
password: password,
|
||||
confirmPassword: password
|
||||
)
|
||||
|
||||
_ = try await database.users.create(adminUser)
|
||||
|
||||
context.console.print("Generated admin user: \(adminUser.username)")
|
||||
}
|
||||
|
||||
}
|
||||
63
Sources/App/Commands/SeedCommand.swift
Normal file
63
Sources/App/Commands/SeedCommand.swift
Normal file
@@ -0,0 +1,63 @@
|
||||
#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
|
||||
Reference in New Issue
Block a user