diff --git a/packages/nocodb/src/lib/db/sql-data-mapper/lib/sql/functionMappings/mssql.ts b/packages/nocodb/src/lib/db/sql-data-mapper/lib/sql/functionMappings/mssql.ts index 78c4f5c142..48d0fe0472 100644 --- a/packages/nocodb/src/lib/db/sql-data-mapper/lib/sql/functionMappings/mssql.ts +++ b/packages/nocodb/src/lib/db/sql-data-mapper/lib/sql/functionMappings/mssql.ts @@ -1,5 +1,6 @@ import { MapFnArgs } from '../mapFunctionName'; import commonFns from './commonFns'; +import { getWeekdayByText } from '../helpers/formulaFnHelper'; const mssql = { ...commonFns, @@ -111,19 +112,10 @@ const mssql = { WEEKDAY: ({ fn, knex, pt, colAlias }: MapFnArgs) => { // DATEPART(WEEKDAY, DATE): sunday = 1, monday = 2, ..., saturday = 7 // WEEKDAY() returns an index from 0 to 6 for Monday to Sunday - const m = { - monday: 0, - tuesday: 1, - wednesday: 2, - thursday: 3, - friday: 4, - saturday: 5, - sunday: 6, - }; return knex.raw( - `(DATEPART(WEEKDAY, ${fn(pt.arguments[0])}) - 2 - ${ - m[pt?.arguments[1]?.value.toLowerCase()] || 0 - } % 7 + 7) % 7 ${colAlias}` + `(DATEPART(WEEKDAY, ${fn(pt.arguments[0])}) - 2 - ${getWeekdayByText( + pt?.arguments[1]?.value + )} % 7 + 7) % 7 ${colAlias}` ); }, }; diff --git a/packages/nocodb/src/lib/db/sql-data-mapper/lib/sql/functionMappings/mysql.ts b/packages/nocodb/src/lib/db/sql-data-mapper/lib/sql/functionMappings/mysql.ts index 9d8df34256..089485cf0e 100644 --- a/packages/nocodb/src/lib/db/sql-data-mapper/lib/sql/functionMappings/mysql.ts +++ b/packages/nocodb/src/lib/db/sql-data-mapper/lib/sql/functionMappings/mysql.ts @@ -1,5 +1,6 @@ import { MapFnArgs } from '../mapFunctionName'; import commonFns from './commonFns'; +import { getWeekdayByText } from '../helpers/formulaFnHelper'; const mysql2 = { ...commonFns, @@ -57,18 +58,10 @@ const mysql2 = { }, WEEKDAY: ({ fn, knex, pt, colAlias }: MapFnArgs) => { // WEEKDAY() returns an index from 0 to 6 for Monday to Sunday - const m = { - monday: 0, - tuesday: 1, - wednesday: 2, - thursday: 3, - friday: 4, - saturday: 5, - sunday: 6, - }; - const offset = m[pt?.arguments[1]?.value.toLowerCase()] || 0; return knex.raw( - `(WEEKDAY(${fn(pt.arguments[0])}) - ${offset} % 7 + 7) % 7 ${colAlias}` + `(WEEKDAY(${fn(pt.arguments[0])}) - ${getWeekdayByText( + pt?.arguments[1]?.value + )} % 7 + 7) % 7 ${colAlias}` ); }, }; diff --git a/packages/nocodb/src/lib/db/sql-data-mapper/lib/sql/functionMappings/pg.ts b/packages/nocodb/src/lib/db/sql-data-mapper/lib/sql/functionMappings/pg.ts index 2fdef7fa39..0e4176ce27 100644 --- a/packages/nocodb/src/lib/db/sql-data-mapper/lib/sql/functionMappings/pg.ts +++ b/packages/nocodb/src/lib/db/sql-data-mapper/lib/sql/functionMappings/pg.ts @@ -1,5 +1,6 @@ import { MapFnArgs } from '../mapFunctionName'; import commonFns from './commonFns'; +import { getWeekdayByText } from '../helpers/formulaFnHelper'; const pg = { ...commonFns, @@ -45,20 +46,10 @@ const pg = { WEEKDAY: ({ fn, knex, pt, colAlias }: MapFnArgs) => { // isodow: the day of the week as Monday (1) to Sunday (7) // WEEKDAY() returns an index from 0 to 6 for Monday to Sunday - const m = { - monday: 0, - tuesday: 1, - wednesday: 2, - thursday: 3, - friday: 4, - saturday: 5, - sunday: 6, - }; - const offset = m[pt?.arguments[1]?.value.toLowerCase()] || 0; return knex.raw( - `(EXTRACT(ISODOW FROM ${fn( - pt.arguments[0] - )}) - 1 - ${offset} % 7 + 7) % 7 ${colAlias}` + `(EXTRACT(ISODOW FROM ${fn(pt.arguments[0])}) - 1 - ${getWeekdayByText( + pt?.arguments[1]?.value + )} % 7 + 7) % 7 ${colAlias}` ); }, }; diff --git a/packages/nocodb/src/lib/db/sql-data-mapper/lib/sql/functionMappings/sqlite.ts b/packages/nocodb/src/lib/db/sql-data-mapper/lib/sql/functionMappings/sqlite.ts index 343bbe2856..69d7ec1f8e 100644 --- a/packages/nocodb/src/lib/db/sql-data-mapper/lib/sql/functionMappings/sqlite.ts +++ b/packages/nocodb/src/lib/db/sql-data-mapper/lib/sql/functionMappings/sqlite.ts @@ -1,5 +1,6 @@ import { MapFnArgs } from '../mapFunctionName'; import commonFns from './commonFns'; +import { getWeekdayByText } from '../helpers/formulaFnHelper'; const sqlite3 = { ...commonFns, @@ -79,19 +80,10 @@ const sqlite3 = { WEEKDAY: ({ fn, knex, pt, colAlias }: MapFnArgs) => { // strftime('%w', date) - day of week 0 - 6 with Sunday == 0 // WEEKDAY() returns an index from 0 to 6 for Monday to Sunday - const m = { - monday: 0, - tuesday: 1, - wednesday: 2, - thursday: 3, - friday: 4, - saturday: 5, - sunday: 6, - }; return knex.raw( - `strftime('%w', ${fn(pt.arguments[0])}, 'weekday ${ - m[pt?.arguments[1]?.value.toLowerCase()] || 0 - }')${colAlias}` + `strftime('%w', ${fn(pt.arguments[0])}, 'weekday ${getWeekdayByText( + pt?.arguments[1]?.value + )}')${colAlias}` ); }, };