Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

fix(deep): prevent false unique constraint errors and combine delete queries #781

Merged
merged 49 commits into from
Sep 3, 2024
Merged
Changes from 1 commit
Commits
Show all changes
49 commits
Select commit Hold shift + click to select a range
2887ca0
fix(deep): prevent false unique constraint errors
David-Kunz Aug 21, 2024
aa73162
single loop
David-Kunz Aug 29, 2024
180cfba
single delete statement
David-Kunz Aug 29, 2024
5672f40
simpler queries for single keys
David-Kunz Aug 29, 2024
f0f1862
simpler
David-Kunz Aug 29, 2024
fa7cfec
.
David-Kunz Aug 29, 2024
c64d4a7
simpler
David-Kunz Aug 29, 2024
57f3e89
use virtual instead of IsActiveEntity
David-Kunz Aug 29, 2024
6f15817
Merge branch 'main' into no-false-unique-constraint-errors
David-Kunz Aug 29, 2024
58f9c53
added test
David-Kunz Aug 29, 2024
dcc5536
.
David-Kunz Aug 29, 2024
e0e0a70
.
David-Kunz Aug 29, 2024
466d355
.
David-Kunz Aug 29, 2024
e79376b
.
David-Kunz Aug 29, 2024
3160f05
.
David-Kunz Aug 29, 2024
cd841c9
.
David-Kunz Aug 29, 2024
43b0504
.
David-Kunz Aug 29, 2024
b605995
.
David-Kunz Aug 29, 2024
f05b224
.
David-Kunz Aug 29, 2024
b7b9837
Update db-service/lib/deep-queries.js
David-Kunz Aug 30, 2024
52e6d91
mv cds.test
David-Kunz Aug 30, 2024
7802d5e
Update test/compliance/UPDATE.test.js
David-Kunz Aug 30, 2024
9c6a519
no single key difference
David-Kunz Aug 30, 2024
e3895e7
.
David-Kunz Aug 30, 2024
d1a6874
Merge branch 'main' into no-false-unique-constraint-errors
David-Kunz Aug 30, 2024
dd35333
.
David-Kunz Aug 30, 2024
194b888
.
David-Kunz Aug 30, 2024
97c0c74
.
David-Kunz Aug 30, 2024
2673110
.
David-Kunz Aug 30, 2024
1e5c1d4
.
David-Kunz Aug 30, 2024
7f72386
.
David-Kunz Aug 30, 2024
fff3ed4
.bug
David-Kunz Aug 30, 2024
8e19a2e
use ROOT tag
David-Kunz Sep 2, 2024
7189dfd
Merge branch 'main' into testing
David-Kunz Sep 2, 2024
99bcef2
.
David-Kunz Sep 2, 2024
e39b8fa
explanation
David-Kunz Sep 2, 2024
43012c3
explanation
David-Kunz Sep 2, 2024
ec5326b
bug needs to be fixed
David-Kunz Sep 2, 2024
b552a8f
simplify
David-Kunz Sep 2, 2024
6b75734
Merge branch 'main' into no-false-unique-constraint-errors
David-Kunz Sep 2, 2024
770deff
.
David-Kunz Sep 2, 2024
a9290dd
.
David-Kunz Sep 2, 2024
758fa4c
.
David-Kunz Sep 2, 2024
537874c
Merge branch 'main' into no-false-unique-constraint-errors
David-Kunz Sep 2, 2024
c44ba9d
Merge branch 'main' into no-false-unique-constraint-errors
johannes-vogel Sep 3, 2024
288007d
.
David-Kunz Sep 3, 2024
d01f666
.
David-Kunz Sep 3, 2024
87007ac
.
David-Kunz Sep 3, 2024
94a40e6
.
David-Kunz Sep 3, 2024
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
12 changes: 6 additions & 6 deletions db-service/lib/deep-queries.js
Original file line number Diff line number Diff line change
Expand Up @@ -45,17 +45,17 @@ async function onDeep(req, next) {
if (query.UPDATE && !beforeData.length) return 0

const queries = getDeepQueries(query, beforeData, target)
const res = await Promise.all(queries.map(query => {
if (query.INSERT) return this.onINSERT({ query })
if (query.UPDATE) return this.onUPDATE({ query })
if (query.DELETE) return this.onSIMPLE({ query })
}))
// first delete, then update, then insert because of unique constraints
await Promise.all(queries.filter(q => q.DELETE).map(query => this.onSIMPLE({ query })))
await Promise.all(queries.filter(q => q.UPDATE).map(query => this.onUPDATE({ query })))
const inserts = await Promise.all(queries.filter(q => q.INSERT).map(query => this.onINSERT({ query })))
David-Kunz marked this conversation as resolved.
Show resolved Hide resolved

return (
beforeData.length ||
new InsertResult(query, [
{
changes: Array.isArray(req.data) ? req.data.length : 1,
...(res[0]?.results[0]?.lastInsertRowid ? { lastInsertRowid: res[0].results[0].lastInsertRowid } : {}),
...(inserts[0]?.results[0]?.lastInsertRowid ? { lastInsertRowid: inserts[0].results[0].lastInsertRowid } : {}),
},
])
)
Expand Down