Coder Social home page Coder Social logo

Usage without Row Models about drift HOT 2 CLOSED

clragon avatar clragon commented on September 22, 2024
Usage without Row Models

from drift.

Comments (2)

simolus3 avatar simolus3 commented on September 22, 2024

I think I understand what you want, and I agree that allowing more flexibility in the way queries are interpreted can be useful. But drift can already do most of these things, at least kind of. So it would be good to know what you've tried and what hasn't worked for you.

Through selectOnly, it's possible to obtain a TypedResult row which behaves in a similar way to rows from Exposed. You can call read with an expression, including table columns (which aren't static getters in drift but you can do row.read(myTable.someProp)). This allows omitting fields and combining multiple tables with joins. Is this kind of what you are looking for (or if not, what makes this inconvenient for you)?

I think we could still support a way to disable builtin row classes, for instance by letting users write @UseRowClass(TypedResult) or @UseRowClass(Map). I want to mention that @UseRowClass(Record) is already a way to make drift emit considerably less code by using records instead of custom row classes. But if you need that dynamic expressiveness, are row classes actively standing in the way or is that still possible with selectOnly and other advanced query builder APIs?

from drift.

clragon avatar clragon commented on September 22, 2024

I see, yes.

    (selectOnly(identitiesTable)..addColumns([identitiesTable.id]))
        .map((row) => row.read(identitiesTable.id)!)
        .watchSingle();

    (selectOnly(identitiesTable)..addColumns(identitiesTable.$columns))
        .map((row) => row.read(identitiesTable.id))
        .watchSingle();

these things work fine. I knew about selectOnly + addColumns but didnt realize I had to use the generated tables.

I guess this syntax doesnt necessarily feel intuitive to me but I have the feeling we probably cant do much better in dart because of the lack of reflection. An option for no RowClass would not be terrible as I prefer less code generation, but I assume we cant get rid of it entirely.

from drift.

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.