fix(bi): orderBy bug under MySQL (#2283)
* fix(bi): orderBy bug under MySQL * fix: compatible with pgsql
This commit is contained in:
parent
1f91ebc65e
commit
4e979bc7b7
@ -41,8 +41,8 @@ describe('api', () => {
|
|||||||
const repo = db.getRepository('chart_test');
|
const repo = db.getRepository('chart_test');
|
||||||
await repo.create({
|
await repo.create({
|
||||||
values: [
|
values: [
|
||||||
{ price: 1, count: 1, title: 'title1' },
|
{ price: 1, count: 1, title: 'title1', createdAt: '2023-02-02' },
|
||||||
{ price: 2, count: 2, title: 'title2' },
|
{ price: 2, count: 2, title: 'title2', createdAt: '2023-01-01' },
|
||||||
],
|
],
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
@ -51,10 +51,8 @@ describe('api', () => {
|
|||||||
await db.close();
|
await db.close();
|
||||||
});
|
});
|
||||||
|
|
||||||
test('query', () => {
|
test('query', async () => {
|
||||||
expect.assertions(1);
|
const result = await queryData({ db } as any, {
|
||||||
return expect(
|
|
||||||
queryData({ db } as any, {
|
|
||||||
collection: 'chart_test',
|
collection: 'chart_test',
|
||||||
measures: [
|
measures: [
|
||||||
{
|
{
|
||||||
@ -72,14 +70,12 @@ describe('api', () => {
|
|||||||
alias: 'Title',
|
alias: 'Title',
|
||||||
},
|
},
|
||||||
],
|
],
|
||||||
}),
|
});
|
||||||
).resolves.toBeDefined();
|
expect(result).toBeDefined();
|
||||||
});
|
});
|
||||||
|
|
||||||
test('query with sort', () => {
|
test('query with sort', async () => {
|
||||||
expect.assertions(1);
|
const result = await queryData({ db } as any, {
|
||||||
return expect(
|
|
||||||
queryData({ db } as any, {
|
|
||||||
collection: 'chart_test',
|
collection: 'chart_test',
|
||||||
measures: [
|
measures: [
|
||||||
{
|
{
|
||||||
@ -95,11 +91,12 @@ describe('api', () => {
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
field: ['createdAt'],
|
field: ['createdAt'],
|
||||||
format: 'YYYY',
|
format: 'YYYY-MM',
|
||||||
},
|
},
|
||||||
],
|
],
|
||||||
orders: [{ field: 'createdAt', order: 'asc' }],
|
orders: [{ field: 'createdAt', order: 'asc' }],
|
||||||
}),
|
});
|
||||||
).resolves.toBeDefined();
|
expect(result).toBeDefined();
|
||||||
|
expect(result).toMatchObject([{ createdAt: '2023-01' }, { createdAt: '2023-02' }]);
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
@ -161,7 +161,12 @@ export const parseBuilder = (ctx: Context, builder: QueryParams) => {
|
|||||||
});
|
});
|
||||||
|
|
||||||
orders.forEach((item: OrderProps) => {
|
orders.forEach((item: OrderProps) => {
|
||||||
const name = hasAgg ? sequelize.literal(`"${item.alias}"`) : sequelize.col(item.field as string);
|
const dialect = sequelize.getDialect();
|
||||||
|
let alias = `"${item.alias}"`;
|
||||||
|
if (dialect === 'mysql') {
|
||||||
|
alias = `\`${item.alias}\``;
|
||||||
|
}
|
||||||
|
const name = hasAgg ? sequelize.literal(alias) : sequelize.col(item.field as string);
|
||||||
order.push([name, item.order || 'ASC']);
|
order.push([name, item.order || 'ASC']);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user