mirror of https://github.com/nocodb/nocodb
Pranav C
3 years ago
8 changed files with 59 additions and 20 deletions
@ -0,0 +1,28 @@ |
|||||||
|
import {MapFnArgs} from "../mapFunctionName"; |
||||||
|
|
||||||
|
export default { |
||||||
|
// todo: handle default case
|
||||||
|
SWITCH: (args: MapFnArgs) => { |
||||||
|
const count = Math.floor((args.pt.arguments.length-1) / 2) |
||||||
|
let query = ''; |
||||||
|
|
||||||
|
const switchVal = args.fn(args.pt.arguments[0]).toQuery(); |
||||||
|
|
||||||
|
for (let i = 0; i < count; i++) { |
||||||
|
query += args.knex.raw(`\n\tWHEN ${args.fn(args.pt.arguments[i * 2 + 1]).toQuery()} THEN ${args.fn(args.pt.arguments[i * 2 + 2]).toQuery()}`).toQuery() |
||||||
|
} |
||||||
|
if (args.pt.arguments.length % 2 === 0) { |
||||||
|
query += args.knex.raw(`\n\tELSE ${args.fn(args.pt.arguments[args.pt.arguments.length - 1]).toQuery()}`).toQuery() |
||||||
|
} |
||||||
|
return args.knex.raw(`CASE ${switchVal} ${query}\n END${args.colAlias}`) |
||||||
|
}, |
||||||
|
IF: (args: MapFnArgs) => { |
||||||
|
let query = args.knex.raw(`\n\tWHEN ${args.fn(args.pt.arguments[0]).toQuery()} THEN ${args.fn(args.pt.arguments[1]).toQuery()}`).toQuery(); |
||||||
|
if (args.pt.arguments[2]) { |
||||||
|
query += args.knex.raw(`\n\tELSE ${args.fn(args.pt.arguments[2]).toQuery()}`).toQuery() |
||||||
|
} |
||||||
|
return args.knex.raw(`CASE ${query}\n END${args.colAlias}`) |
||||||
|
}, |
||||||
|
TRUE:(_args) => 1, |
||||||
|
FALSE:(_args) => 0 |
||||||
|
} |
Loading…
Reference in new issue