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: list inside path expression #428

Closed
wants to merge 5 commits into from
Closed
Changes from 2 commits
Commits
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
33 changes: 33 additions & 0 deletions db-service/test/cqn4sql/path-in-from.test.js
Original file line number Diff line number Diff line change
Expand Up @@ -43,4 +43,37 @@ describe('infix filter on entities', () => {
let query = cqn4sql(CQL`SELECT from bookshop.Books[author.ID = 22] {Books.ID}`, model)
expect(query).to.deep.equal(CQL`SELECT from bookshop.Books as Books {Books.ID} WHERE Books.author_ID = 22`)
})
it('list in where', () => {
const select = SELECT.from({ ref: ['bookshop.Books'] }).where([
{ list: [{ ref: ['ID'] }] },
'in',
SELECT.from({ ref: ['bookshop.Books'] }).where([{ ref: ['ID'] }, '=', { val: 5 }]),
])
let query = cqn4sql(select, model)
expect(query).to.not.be.undefined
})

// TO FIX
it('list in where in ref', () => {
const select = SELECT.from({
ref: [
{
id: 'bookshop.Books',
where: [
{ list: [{ ref: ['ID'] }] },
'in',
SELECT.from({ ref: ['bookshop.Books'] }).where([{ ref: ['ID'] }, '=', { val: 5 }]),
],
},
],
})
let response
try {
response = cqn4sql(select, model)
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Please use the proper expect API when testing for errors. (example)

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Why would we need to support that in general?
From my point of view, the from clause is more of a URL representation that does not allow for subselects.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It is required to delete the compositions that exist on the table, but this is not possible when doing it directly on the view. As they might be removed and therefor having them in the path expression would fail in cqn4sql.

So the idea is to map the root entries that have to be deleted from the table by using the sub select. While still using the path expression logic of cqn4sql to make the follow up compositions deletes.

} catch (error) {
response = error
}

expect(response.message).to.deep.equal(`Cannot read properties of undefined (reading 'length')`)
})
})
Loading