Merge pull request #11743 from Budibase/budi-7476-postgres-sql-invalid-time-value-error-when-saving-json-as
Postgres sql invalid time value error when saving json as text
This commit is contained in:
commit
0c19bac1ec
|
@ -58,7 +58,7 @@ function parse(input: any) {
|
||||||
return null
|
return null
|
||||||
}
|
}
|
||||||
if (isIsoDateString(input)) {
|
if (isIsoDateString(input)) {
|
||||||
return new Date(input)
|
return new Date(input.trim())
|
||||||
}
|
}
|
||||||
return input
|
return input
|
||||||
}
|
}
|
||||||
|
|
|
@ -657,4 +657,29 @@ describe("SQL query builder", () => {
|
||||||
sql: `select * from (select top (@p0) * from [test] order by [test].[id] asc) as [test]`,
|
sql: `select * from (select top (@p0) * from [test] order by [test].[id] asc) as [test]`,
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
|
|
||||||
|
it("should not parse JSON string as Date", () => {
|
||||||
|
let query = new Sql(SqlClient.POSTGRES, limit)._query(
|
||||||
|
generateCreateJson(TABLE_NAME, {
|
||||||
|
name: '{ "created_at":"2023-09-09T03:21:06.024Z" }',
|
||||||
|
})
|
||||||
|
)
|
||||||
|
expect(query).toEqual({
|
||||||
|
bindings: ['{ "created_at":"2023-09-09T03:21:06.024Z" }'],
|
||||||
|
sql: `insert into \"test\" (\"name\") values ($1) returning *`,
|
||||||
|
})
|
||||||
|
})
|
||||||
|
|
||||||
|
it("should parse and trim valid string as Date", () => {
|
||||||
|
const dateObj = new Date("2023-09-09T03:21:06.024Z")
|
||||||
|
let query = new Sql(SqlClient.POSTGRES, limit)._query(
|
||||||
|
generateCreateJson(TABLE_NAME, {
|
||||||
|
name: " 2023-09-09T03:21:06.024Z ",
|
||||||
|
})
|
||||||
|
)
|
||||||
|
expect(query).toEqual({
|
||||||
|
bindings: [dateObj],
|
||||||
|
sql: `insert into \"test\" (\"name\") values ($1) returning *`,
|
||||||
|
})
|
||||||
|
})
|
||||||
})
|
})
|
||||||
|
|
|
@ -182,11 +182,12 @@ export function getSqlQuery(query: SqlQuery | string): SqlQuery {
|
||||||
export const isSQL = helpers.isSQL
|
export const isSQL = helpers.isSQL
|
||||||
|
|
||||||
export function isIsoDateString(str: string) {
|
export function isIsoDateString(str: string) {
|
||||||
if (!/\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}.\d{3}Z/.test(str)) {
|
const trimmedValue = str.trim()
|
||||||
|
if (!/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}.\d{3}Z$/.test(trimmedValue)) {
|
||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
let d = new Date(str)
|
let d = new Date(trimmedValue)
|
||||||
return d.toISOString() === str
|
return d.toISOString() === trimmedValue
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
Loading…
Reference in New Issue