Skip to content

Commit 5c41cc7

Browse files
committed
fix: adjust orWhere
1 parent 0c7dd4d commit 5c41cc7

5 files changed

Lines changed: 39 additions & 11 deletions

File tree

package-lock.json

Lines changed: 2 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "@athenna/database",
3-
"version": "5.45.0",
3+
"version": "5.46.0",
44
"description": "The Athenna database handler for SQL/NoSQL.",
55
"license": "MIT",
66
"author": "João Lenon <lenon@athenna.io>",

src/database/drivers/BaseKnexDriver.ts

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1351,6 +1351,12 @@ export class BaseKnexDriver extends Driver<Knex, Knex.QueryBuilder> {
13511351
throw new EmptyColumnException('orWhere')
13521352
}
13531353

1354+
if (this.isUsingJsonSelector(statement)) {
1355+
this.orWhereJson(statement, operation)
1356+
1357+
return this
1358+
}
1359+
13541360
this.qb.orWhere(statement, operation)
13551361

13561362
return this
@@ -1364,6 +1370,12 @@ export class BaseKnexDriver extends Driver<Knex, Knex.QueryBuilder> {
13641370
throw new EmptyValueException('orWhere')
13651371
}
13661372

1373+
if (this.isUsingJsonSelector(statement)) {
1374+
this.orWhereJson(statement, operation, value)
1375+
1376+
return this
1377+
}
1378+
13671379
this.qb.orWhere(statement, operation, value)
13681380

13691381
return this

src/database/drivers/PostgresDriver.ts

Lines changed: 0 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -176,10 +176,6 @@ export class PostgresDriver extends BaseKnexDriver {
176176
throw new Error(`Invalid JSON selector: ${column}`)
177177
}
178178

179-
if (!parsed.path.includes('*')) {
180-
return super.whereJson(column, operator, value)
181-
}
182-
183179
const path = this.parseJsonSelectorToWildcardPath(parsed.path)
184180
const normalized = this.normalizeJsonOperation(operator, value)
185181

@@ -209,10 +205,6 @@ export class PostgresDriver extends BaseKnexDriver {
209205
throw new Error(`Invalid JSON selector: ${column}`)
210206
}
211207

212-
if (!parsed.path.includes('*')) {
213-
return super.orWhereJson(column, operator, value)
214-
}
215-
216208
const path = this.parseJsonSelectorToWildcardPath(parsed.path)
217209
const normalized = this.normalizeJsonOperation(operator, value)
218210

tests/unit/drivers/PostgresDriverTest.ts

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1829,6 +1829,18 @@ export default class PostgresDriverTest {
18291829
assert.deepEqual(data, [{ user_id: '2' }, { user_id: '2' }])
18301830
}
18311831

1832+
@Test()
1833+
public async shouldBeAbleToFilterJsonByKeyUsingWhereSelector({ assert }: Context) {
1834+
await this.driver.table('events').createMany([
1835+
{ id: '1', metadata: { name: 'admin' } },
1836+
{ id: '2', metadata: { name: 'member' } }
1837+
])
1838+
1839+
const data = await this.driver.table('events').where('metadata->name', 'admin').findMany()
1840+
1841+
assert.deepEqual(data, [{ id: '1', metadata: { name: 'admin' } }])
1842+
}
1843+
18321844
@Test()
18331845
public async shouldBeAbleToFilterJsonArrayByIndexUsingWhereJson({ assert }: Context) {
18341846
await this.driver.table('events').createMany([
@@ -2257,6 +2269,18 @@ export default class PostgresDriverTest {
22572269
])
22582270
}
22592271

2272+
@Test()
2273+
public async shouldBeAbleToFilterJsonUsingOrWhereSelector({ assert }: Context) {
2274+
await this.driver.table('events').createMany([
2275+
{ id: '1', metadata: { name: 'admin' } },
2276+
{ id: '2', metadata: { name: 'member' } }
2277+
])
2278+
2279+
const data = await this.driver.table('events').where('id', '0').orWhere('metadata->name', 'member').findMany()
2280+
2281+
assert.deepEqual(data, [{ id: '2', metadata: { name: 'member' } }])
2282+
}
2283+
22602284
@Test()
22612285
public async shouldBeAbleToAddAOrWhereClauseToTheQueryUsingDriver({ assert }: Context) {
22622286
await this.driver.table('users').createMany([

0 commit comments

Comments
 (0)