Comments (2)
Is this what you're after https://kyse.link/V6moD
from kysely.
@koskimas I'm running into two problems, the first I have a work around for but I wanted to raise it in case I am missing something.
This line:
.leftJoinLateral(
sql<{model: string}>`unnest(ARRAY[${sql.join(configuredModels)}]::varchar[])`.as<'v'>(
'v(model)' as 'v'
),
(join) => join.onTrue()
)
Will render as:
LEFT JOIN LATERAL unnest(ARRAY[$1, $2]::VARCHAR[]) AS "v(model)" ON TRUE
In the Postgres dialect, "v(model)"
(note double quotes) won't create v.model
(accessible with v.*
, for example) rather, you'll et a column called v(model)
. Not the end of the world...one can work around that. Curious if there is a way to drop a literal as?
Second thing I'm running into. I ended up cleaning up my code a bit and using RawBuilder<T>
to implement a convenience method:
function unnestedArray<T>(value: T): RawBuilder<T> {
if (!Array.isArray(value)) {
throw new TypeError('Value must be an array')
}
return sql`unnest(ARRAY[${sql.join(value)}]::varchar[])`
}
const batchToQueue = (await pg
.selectFrom('EmbeddingsMetadata as em')
.selectAll('em')
.leftJoinLateral(unnestedArray(configuredModels).as('model'), (join) => join.onTrue())
.leftJoin('Team as t', 'em.teamId', 't.id')
.select('model') // <-- Typescript error
The TypeScript error I get is:
No overload matches this call.
Overload 1 of 3, '(selections: readonly SelectExpression<DB & { em: EmbeddingsMetadata; } & { model: (string | null)[]; } & { t: Nullable<Team>; }, "em" | "model" | "t">[]): SelectQueryBuilder<...>', gave the following error.
Argument of type 'string' is not assignable to parameter of type 'readonly SelectExpression<DB & { em: EmbeddingsMetadata; } & { model: (string | null)[]; } & { t: Nullable<Team>; }, "em" | "model" | "t">[]'.
Overload 2 of 3, '(callback: SelectCallback<DB & { em: EmbeddingsMetadata; } & { model: (string | null)[]; } & { t: Nullable<Team>; }, "em" | "model" | "t">): SelectQueryBuilder<...>', gave the following error.
Argument of type 'string' is not assignable to parameter of type 'SelectCallback<DB & { em: EmbeddingsMetadata; } & { model: (string | null)[]; } & { t: Nullable<Team>; }, "em" | "model" | "t">'.
Overload 3 of 3, '(selection: SelectExpression<DB & { em: EmbeddingsMetadata; } & { model: (string | null)[]; } & { t: Nullable<Team>; }, "em" | "model" | "t">): SelectQueryBuilder<...>', gave the following error.
Argument of type '"model"' is not assignable to parameter of type 'SelectExpression<DB & { em: EmbeddingsMetadata; } & { model: (string | null)[]; } & { t: Nullable<Team>; }, "em" | "model" | "t">'.ts(2769)
This is strange to me as I see "model"
in the types right there but I haven't walked the source yet to grok why this TS error is happening.
Anyhow, the first bit is the thing that's more interesting. Definitely a corner case. If you don't care to address it I am fine just working around it for now.
from kysely.
Related Issues (20)
- OnConflict update all Fields HOT 6
- Inserting large number of rows leads to exec_bind_message error in postgres HOT 1
- Question about a generic getById HOT 2
- May anyone help me with the short version of selectAll type? HOT 1
- RuntimeDriver is not exported HOT 4
- `SELECT` in SQL template tag has parens around it, making it invalid in some contexts in SQLite HOT 3
- Are there any plans to support mikro-orm? HOT 2
- Support for Postgres ?| operator (do any of these array strings exist as top-level keys) HOT 1
- Create a generic function with narrowed type in `ExpressionBuilder` HOT 3
- Failures during migration do not create errors HOT 7
- `eb(ref, op, val)` does not accept `sql` template tag escaped `op` argument. HOT 2
- Incorrect syntax near 'format' HOT 1
- Multi-statement queries causes wrong result interpretation HOT 2
- Kysely mssql dialect support for bun improved HOT 1
- SELECT ARRAY function? HOT 3
- Implement `WITH` for create index HOT 1
- MariaDB (v10) using jsonObjectFrom and jsonArrayFrom HOT 1
- Select columns as NULL or as placeholder HOT 1
- Support table names in UpdateQueryBuilder.returningAll
- orderBy gives an error when a space separated string of sortBy and sortOrder is passed in eg- orderBy('sortBy sortOrder') HOT 2
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
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.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from kysely.