AlexErrant
AlexErrant
Explore posts from servers
KKysely
Created by oof2win2 on 5/15/2024 in #help
Update on conflict clause
4 replies
KKysely
Created by AlexErrant on 3/11/2024 in #help
Is `sql.join` the best way to concatenate sql templates?
To be clear, the generated SQL is parameterized:
SELECT
"id",
"first_name"
FROM
"person"
WHERE
noteFtsFv.rowid NOT IN (
SELECT
rowid
FROM
noteFtsFv
WHERE
noteFtsFv.fieldValues MATCH $1
)
AND $2
SELECT
"id",
"first_name"
FROM
"person"
WHERE
noteFtsFv.rowid NOT IN (
SELECT
rowid
FROM
noteFtsFv
WHERE
noteFtsFv.fieldValues MATCH $1
)
AND $2
https://kyse.link/gpJdB The SQL that I write will go into sql.raw. User queries go into the array as-is and are parameterized. I'm building a feature similar to Github's search syntax. https://gist.github.com/bonniss/4f0de4f599708c5268134225dda003e0 I've built the grammar and now I'm walking the syntax tree and incrementally building the SQL. My grammar has support for grouping, e.g. (X and Y) or (Z and Y). While it is possible to have Kysely to group WHERE clauses like the above... it isn't as easy to do in an incremental fashion. With strings, if I see a "Group" syntax node, I stringconcat a (, recursively call myself on the children, then concat ). Easy. With Kysely, I'd have to walk the group's children to find out if the contents are "AND" or "OR" and I just don't wanna do that 😅 Relevant code if you care https://github.com/AlexErrant/Pentive/blob/b6aaaba608483c66988351fc033581e0abe482ec/shared-dom/src/language/query2sql.ts#L70-L98 Feel free to ignore this paragraph just justifying my laziness 😅
8 replies
KKysely
Created by AlexErrant on 2/16/2023 in #help
How to make a top level SELECT that isn't from a table?
ohh I see what you're doing with sql.literal. I'm going with your third answer because it seems cleaner (and slightly more typesafe), but your second one also works. Greatly appreciate your multiple answers - thanks!
12 replies
KKysely
Created by AlexErrant on 2/16/2023 in #help
How to make a top level SELECT that isn't from a table?
Howdy 🙋‍♂️ Unfortunately PlanetScale/Vitess doesn't support CTEs. Thanks anyways!
12 replies