Code Monkey home page Code Monkey logo

Comments (6)

cakoose avatar cakoose commented on August 15, 2024 1

BTW, I've been using this array helper and it seems to work:

const array = <T>(elementType: ColumnDefinition<T>): ColumnDefinition<Array<T>> =>
    dataType<Array<T>>(elementType + '[]');

from mammoth.

martijndeh avatar martijndeh commented on August 15, 2024 1

I added the array helper as you suggested, thanks.

I also added a raw expression helper so you have your escape hatch.

The changes are on master and will be included in the next version. Also, I'll update the docs.

from mammoth.

martijndeh avatar martijndeh commented on August 15, 2024

Not yet, but I can add this in. In the meantime you should be able to use dataType<string[]>('text[]') to achieve this.

I do wonder how to support multi-dimensional arrays. I did see some APIs use e.g. [text()] or [[text()]]. Or there should be an array2d(), etc. What do you think?

For reference there are probably some more array functions which should be taken into account at some point: https://www.postgresql.org/docs/12/arrays.html.

from mammoth.

cakoose avatar cakoose commented on August 15, 2024

Thanks for the workaround. Will use that.

I haven't thought much about multi-dimensional arrays, but my first instinct would be array(array(text()).

For reference there are probably some more array functions which should be taken into account at some point: https://www.postgresql.org/docs/12/arrays.html.

Tangent: Is there a general purpose "escape hatch" in Mammoth to add stuff verbatim to the query? Similar to how I can define my own data type with dataType, is there a way to call obscure Postgres operators and functions even if Mammoth doesn't yet have built-in support for them?

from mammoth.

martijndeh avatar martijndeh commented on August 15, 2024

Great. I'll try to find some time to get this supported in the lib itself.

Tangent: Is there a general purpose "escape hatch" in Mammoth to add stuff verbatim to the query? Similar to how I can define my own data type with dataType, is there a way to call obscure Postgres operators and functions even if Mammoth doesn't yet have built-in support for them?

No, but it's a good suggestion. Something like a raw or unsafe expression e.g. Unsafe<T>(sql: string) or maybe safer something like string literal helper so you can call:

db
  .select(star())
  .from(db.foo)
  .where(raw<T>`col obscure operator = ${value}`)

or

db
  .select(raw<T>`unsupported expression`)
  .from(db.foo)

What do you think?

from mammoth.

cakoose avatar cakoose commented on August 15, 2024

I don't have any experience with tagged template literals, so I don't really know the pros/cons.

Seems reasonable, though. The Zapatos library uses them: docs link.

from mammoth.

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.