mirror of
https://github.com/advplyr/audiobookshelf.git
synced 2026-07-07 09:51:37 +00:00
guard numeric casts for postgres text fields
This commit is contained in:
parent
15d2715a74
commit
8b3f67b7c9
4 changed files with 42 additions and 25 deletions
|
|
@ -61,6 +61,20 @@ function jsonPathNumber(columnExpression, pathSegments, sequelize) {
|
|||
return `json_extract(${columnExpression}, '$.${[].concat(pathSegments).join('.')}')`
|
||||
}
|
||||
|
||||
function safeTextToDoubleExpression(columnExpression, sequelize) {
|
||||
if (isPostgres(sequelize)) {
|
||||
return `CASE WHEN BTRIM(${columnExpression}) ~ '^[+-]?(?:\\d+\\.?\\d*|\\.\\d+)$' THEN BTRIM(${columnExpression})::double precision ELSE NULL END`
|
||||
}
|
||||
return `CAST(${columnExpression} AS FLOAT)`
|
||||
}
|
||||
|
||||
function safeTextToIntegerExpression(columnExpression, sequelize) {
|
||||
if (isPostgres(sequelize)) {
|
||||
return `CASE WHEN BTRIM(${columnExpression}) ~ '^[+-]?\\d+$' THEN BTRIM(${columnExpression})::integer ELSE NULL END`
|
||||
}
|
||||
return `CAST(${columnExpression} AS INTEGER)`
|
||||
}
|
||||
|
||||
module.exports = {
|
||||
getDialect,
|
||||
isPostgres,
|
||||
|
|
@ -71,5 +85,7 @@ module.exports = {
|
|||
jsonArrayContainsValue,
|
||||
jsonArrayExpand,
|
||||
jsonPathText,
|
||||
jsonPathNumber
|
||||
jsonPathNumber,
|
||||
safeTextToDoubleExpression,
|
||||
safeTextToIntegerExpression
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue