feat: working on detail views.

This commit is contained in:
2025-01-12 17:42:06 -05:00
parent 0e31d2c30c
commit 1ce369e156
27 changed files with 527 additions and 137 deletions

View File

@@ -23,9 +23,20 @@ final class User: Model, @unchecked Sendable {
@Field(key: "password_hash")
var passwordHash: String
@Timestamp(key: "created_at", on: .create)
var createdAt: Date?
@Timestamp(key: "updated_at", on: .update)
var updatedAt: Date?
init() {}
init(id: UUID? = nil, username: String, email: String, passwordHash: String) {
init(
id: UUID? = nil,
username: String,
email: String,
passwordHash: String
) {
self.id = id
self.username = username
self.email = email
@@ -33,7 +44,13 @@ final class User: Model, @unchecked Sendable {
}
func toDTO() -> DTO {
.init(id: id, username: $username.value, email: $email.value)
.init(
id: id,
username: $username.value,
email: $email.value,
createdAt: createdAt,
updatedAt: updatedAt
)
}
func generateToken() throws -> UserToken {
@@ -58,6 +75,8 @@ extension User {
let id: UUID?
let username: String?
let email: String?
let createdAt: Date?
let updatedAt: Date?
}
struct Migrate: AsyncMigration {
@@ -69,6 +88,8 @@ extension User {
.field("username", .string, .required)
.field("email", .string, .required)
.field("password_hash", .string, .required)
.field("created_at", .datetime)
.field("updated_at", .datetime)
.unique(on: "email", "username")
.create()
}