I have a Fluent (Postgres backed) model that requires type Decimal, but I'm only allowed to store .float/.double.
// Model
final class Stat: Model, Content, Equatable {
    static let schema: String = "stats"
    
    @ID(key: .id)
    var id: UUID?
    
    @Field(key: "name")
    var name: String
    @Field(key: "earned_run_average")
    var era: Decimal // <-- CAN'T DO THIS
}
// Migration
struct CreateStatsTable: Migration {
    func prepare(on database: Database) -> EventLoopFuture<Void> {
        return database.schema(Stats.schema)
            .id()
            .field("name", .string, .required)
            .field("earned_run_average", .decimal/*.decimal TYPE DOES NOT EXIST */, .required)
            .create()
    }
    func revert(on database: Database) -> EventLoopFuture<Void> {
        return database.schema(Stats.schema).delete()
    }
}
The above model with migration will fail. If this is not easily achievable (as easy as .string or .double) is there a way to get a behavior similar to type Decimal in Fluent?
                        
Proper Decimal support for Postgres was added recently.
So you should be able to use
Decimalin theModelfor encoding/decoding to and from aDecimalvalue in the Postgres DB without any issues.As for the
Migration, there still isn't a.decimalDataTypeso you can simply use a custom field for the Postgres Database likenumericas so:This should allow you to use
Decimalwithout any issues.