import FluentSQLiteDriver
import Vapor



/// A registered user
final class User: Model {

    enum Key: String {
        case id = "id"
        case name = "name"
        case hash = "hash"
        case points = "points"
        case table = "table_id"

        var key: FieldKey {
            .init(stringLiteral: rawValue)
        }
    }

    /// The name of the SQLite table
    static let schema = "user"

    /// The unique identifier for this user.
    @ID(key: .id)
    var id: UUID?

    /// The user's full name.
    @Field(key: Key.name.key)
    var name: String

    /// The hash of the user's password
    @Field(key: Key.hash.key)
    var passwordHash: String

    /// The user's total points
    @Field(key: Key.points.key)
    var points: Int

    // Example of an optional parent relation.
    @OptionalParent(key: Key.table.key)
    var table: Table?

    init() { }

    /// Creates a new user.
    init(id: UUID? = nil, name: String, hash: String) {
        self.id = id
        self.name = name
        self.passwordHash = hash
        self.points = 0
    }
}

//extension User: Content { }
