fix: init scope value when all data is null value (#3674)
This commit is contained in:
parent
f9567d711b
commit
3da2a8af92
@ -90,6 +90,41 @@ describe('string field', () => {
|
||||
console.log(end - begin);
|
||||
});
|
||||
|
||||
it('should init sorted value with null scopeValue', async () => {
|
||||
const Test = db.collection({
|
||||
name: 'tests',
|
||||
fields: [
|
||||
{
|
||||
type: 'string',
|
||||
name: 'name',
|
||||
},
|
||||
{
|
||||
type: 'string',
|
||||
name: 'group',
|
||||
},
|
||||
],
|
||||
});
|
||||
|
||||
await db.sync();
|
||||
|
||||
await Test.repository.create({
|
||||
values: [
|
||||
{
|
||||
group: null,
|
||||
name: 'r5',
|
||||
},
|
||||
{
|
||||
group: null,
|
||||
name: 'r6',
|
||||
},
|
||||
],
|
||||
});
|
||||
|
||||
Test.setField('sort', { type: 'sort', scopeKey: 'group' });
|
||||
|
||||
await db.sync();
|
||||
});
|
||||
|
||||
it('should init sorted value with scopeKey', async () => {
|
||||
const Test = db.collection({
|
||||
name: 'tests',
|
||||
|
@ -99,11 +99,19 @@ export class SortField extends Field {
|
||||
|
||||
const whereClause =
|
||||
scopeKey && scopeValue
|
||||
? `
|
||||
WHERE ${queryInterface.quoteIdentifier(scopeKey)} IN (${scopeValue
|
||||
.filter((v) => v !== null)
|
||||
.map((v) => `'${v}'`)
|
||||
.join(', ')})${scopeValue.includes(null) ? ` OR ${queryInterface.quoteIdentifier(scopeKey)} IS NULL` : ''}`
|
||||
? (() => {
|
||||
const filteredScopeValue = scopeValue.filter((v) => v !== null);
|
||||
if (filteredScopeValue.length === 0) {
|
||||
return '';
|
||||
}
|
||||
const initialClause = `
|
||||
WHERE ${queryInterface.quoteIdentifier(scopeKey)} IN (${filteredScopeValue.map((v) => `'${v}'`).join(', ')})`;
|
||||
|
||||
const nullCheck = scopeValue.includes(null)
|
||||
? ` OR ${queryInterface.quoteIdentifier(scopeKey)} IS NULL`
|
||||
: '';
|
||||
return initialClause + nullCheck;
|
||||
})()
|
||||
: '';
|
||||
|
||||
if (this.collection.db.inDialect('postgres')) {
|
||||
|
Loading…
Reference in New Issue
Block a user