Git Product home page Git Product logo

Comments (1)

Craz1k0ek avatar Craz1k0ek commented on June 2, 2024

I've done some more investigation on the matter and the issue can be solved multiple ways.

One would be to cast the type in the database already. For the query that means there must come some kind of cast parameter in the SQLExpression. This in turn can then be read and inserted in SQLSerializer which is called on line 13-14 of SQLDatabase in the sql-kit package. For postgres, the cast can be simply added in the query:

# SELECT SUM("scheme"."column"::<cast type>) FROM "table";
# For integer type, cast to integer is required.
SELECT SUM("scheme"."column"::integer) FROM "table";

For other databases, the implementation may vary, but this currently is only noticed on postgres, however, it may potentially be an issue for MySQL too.

Another option is to add the cast Type to the .sum function (and maybe any aggregate function) to enforce a certain cast on the later DatabaseOutput decode step as shown below:

struct Start: Model, Codable {
    ...
    @Field(key: "nr_of_planets")
    var nrOfPlanets: Int
    ...
}
// For a specific double, this ignores the fact that the field is Int.
// This is a requirement for stored bigints in postgres.
Star.query(on: req.db).sum(\.$nrOfPlanets, as: Double.self).flatMap { doubleVal -> Int in
    // Cast it manually
    if let d = doubleVal { return Int(d) }
    return -1
}

This issue is closely related to #92.

from fluent-postgres-driver.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.