feat: working on detail views.
This commit is contained in:
@@ -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()
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user