fix: init sort field with null group
This commit is contained in:
parent
0c17d609fa
commit
f35da4a2a0
@ -95,6 +95,14 @@ describe('string field', () => {
|
|||||||
group: 'b',
|
group: 'b',
|
||||||
name: 'r4',
|
name: 'r4',
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
group: null,
|
||||||
|
name: 'r5',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
group: null,
|
||||||
|
name: 'r6',
|
||||||
|
},
|
||||||
],
|
],
|
||||||
});
|
});
|
||||||
|
|
||||||
@ -105,6 +113,8 @@ describe('string field', () => {
|
|||||||
const records = await Test.repository.find({});
|
const records = await Test.repository.find({});
|
||||||
const r3 = records.find((r) => r.get('name') === 'r3');
|
const r3 = records.find((r) => r.get('name') === 'r3');
|
||||||
expect(r3.get('sort')).toBe(2);
|
expect(r3.get('sort')).toBe(2);
|
||||||
|
const r5 = records.find((r) => r.get('name') === 'r5');
|
||||||
|
expect(r5.get('sort')).toBe(1);
|
||||||
});
|
});
|
||||||
|
|
||||||
it('should init sorted value by createdAt when primaryKey not exists', async () => {
|
it('should init sorted value by createdAt when primaryKey not exists', async () => {
|
||||||
|
@ -87,11 +87,19 @@ export class SortField extends Field {
|
|||||||
scopeKey ? `PARTITION BY ${queryInterface.quoteIdentifier(scopeKey)}` : ''
|
scopeKey ? `PARTITION BY ${queryInterface.quoteIdentifier(scopeKey)}` : ''
|
||||||
} ORDER BY ${quotedOrderField}) AS new_sequence_number
|
} ORDER BY ${quotedOrderField}) AS new_sequence_number
|
||||||
FROM ${this.collection.quotedTableName()}
|
FROM ${this.collection.quotedTableName()}
|
||||||
${
|
${(() => {
|
||||||
scopeKey
|
if (scopeKey && scopeValue) {
|
||||||
? `WHERE ${queryInterface.quoteIdentifier(scopeKey)} IN (${scopeValue.map((v) => `'${v}'`).join(',')})`
|
const hasNull = scopeValue.includes(null);
|
||||||
: ''
|
|
||||||
|
return `WHERE ${queryInterface.quoteIdentifier(scopeKey)} IN (${scopeValue
|
||||||
|
.filter((v) => v !== null)
|
||||||
|
.map((v) => `'${v}'`)
|
||||||
|
.join(',')}) ${hasNull ? `OR ${queryInterface.quoteIdentifier(scopeKey)} IS NULL` : ''} `;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
return '';
|
||||||
|
})()}
|
||||||
|
|
||||||
)
|
)
|
||||||
${
|
${
|
||||||
this.collection.db.inDialect('mysql')
|
this.collection.db.inDialect('mysql')
|
||||||
@ -99,7 +107,6 @@ export class SortField extends Field {
|
|||||||
UPDATE ${this.collection.quotedTableName()}, ordered_table
|
UPDATE ${this.collection.quotedTableName()}, ordered_table
|
||||||
SET ${this.collection.quotedTableName()}.${this.name} = ordered_table.new_sequence_number
|
SET ${this.collection.quotedTableName()}.${this.name} = ordered_table.new_sequence_number
|
||||||
WHERE ${this.collection.quotedTableName()}.${quotedOrderField} = ordered_table.${quotedOrderField}
|
WHERE ${this.collection.quotedTableName()}.${quotedOrderField} = ordered_table.${quotedOrderField}
|
||||||
${scopeKey ? `AND ${this.collection.quotedTableName()}.${scopeKey} = ordered_table.${scopeKey}` : ''}
|
|
||||||
`
|
`
|
||||||
: `
|
: `
|
||||||
UPDATE ${this.collection.quotedTableName()}
|
UPDATE ${this.collection.quotedTableName()}
|
||||||
@ -130,7 +137,7 @@ export class SortField extends Field {
|
|||||||
const needInitGroups = [];
|
const needInitGroups = [];
|
||||||
for (const group of groups) {
|
for (const group of groups) {
|
||||||
if (await needInit(scopeKey, group[scopeKey])) {
|
if (await needInit(scopeKey, group[scopeKey])) {
|
||||||
needInitGroups.push(group['group']);
|
needInitGroups.push(group[scopeKey]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user