Add support for single codepoint keys for like queries

This commit is contained in:
Stephanie Yang 2021-06-09 15:27:19 -05:00
parent 1bd872e1f4
commit db018e5f41
2 changed files with 40 additions and 4 deletions

View file

@ -225,6 +225,18 @@ describe('mutex (keys) types', () => {
}])).toEqual({ error: false, query: 'Not(Union(Row(fieldName="one"), Row(fieldName="two")))' })
});
it('stringifies like operator with a single-codepoint key', () => {
expect(stringifyRowData([{
row: [{
"field": "fieldName",
"rowOperator": "like",
"value": "_alue",
"type": "mutex",
"keys": true
}]
}])).toEqual({ error: false, query: 'UnionRows(Rows(field=fieldName, like="_alue"))' })
});
it('stringifies like operator with a wildcard', () => {
expect(stringifyRowData([{
row: [{
@ -237,7 +249,7 @@ describe('mutex (keys) types', () => {
}])).toEqual({ error: false, query: 'UnionRows(Rows(field=fieldName, like="value%"))' })
});
it('stringifies like operator without a wildcard', () => {
it('stringifies like operator without a single-codepoint key or wildcard', () => {
expect(stringifyRowData([{
row: [{
"field": "fieldName",
@ -374,6 +386,18 @@ describe('set (keys) types', () => {
}])).toEqual({ error: false, query: 'Not(Union(Row(fieldName="one"), Row(fieldName="two")))' })
});
it('stringifies like operator with a single-codepoint key', () => {
expect(stringifyRowData([{
row: [{
"field": "fieldName",
"rowOperator": "like",
"value": "_alue",
"type": "set",
"keys": true
}]
}])).toEqual({ error: false, query: 'UnionRows(Rows(field=fieldName, like="_alue"))' })
});
it('stringifies like operator with a wildcard', () => {
expect(stringifyRowData([{
row: [{
@ -386,7 +410,7 @@ describe('set (keys) types', () => {
}])).toEqual({ error: false, query: 'UnionRows(Rows(field=fieldName, like="value%"))' })
});
it('stringifies like operator without a wildcard', () => {
it('stringifies like operator without a single-codepoint key or wildcard', () => {
expect(stringifyRowData([{
row: [{
"field": "fieldName",
@ -488,6 +512,18 @@ describe('time (keys) types', () => {
}])).toEqual({ error: false, query: 'Not(Row(fieldName="1234"))' })
});
it('stringifies like operators with a single-codepoint key', () => {
expect(stringifyRowData([{
row: [{
"field": "fieldName",
"rowOperator": "like",
"value": "123_",
"type": "time",
"keys": true
}]
}])).toEqual({ error: false, query: 'UnionRows(Rows(field=fieldName, like="123_"))' })
});
it('stringifies like operators with a wildcard', () => {
expect(stringifyRowData([{
row: [{
@ -500,7 +536,7 @@ describe('time (keys) types', () => {
}])).toEqual({ error: false, query: 'UnionRows(Rows(field=fieldName, like="%1234"))' })
});
it('stringifies like operators without a wildcard', () => {
it('stringifies like operators without a single-codepoint key or wildcard', () => {
expect(stringifyRowData([{
row: [{
"field": "fieldName",

View file

@ -30,7 +30,7 @@ export const stringifyRowData = (rowData: RowGrouping[], operator?: Operator) =>
return { error: true, query: error.message };
}
} else if (rowOperator === 'like') {
if (value.includes('%')) {
if (value.includes('%') || value.includes('_')) {
rowString = `UnionRows(Rows(field=${field}, like="${value}"))`;
} else {
rowString = `UnionRows(Rows(field=${field}, like="%${value}%"))`;