(row: A[] | Record<string, A>, fields?: mariadb.FieldInfo[])
| 145 | } |
| 146 | |
| 147 | export function mapRow<A>(row: A[] | Record<string, A>, fields?: mariadb.FieldInfo[]): (A | ResultValue)[] { |
| 148 | const values = Array.isArray(row) ? row : Object.values(row) |
| 149 | |
| 150 | return values.map((value, i) => { |
| 151 | const type = fields?.[i]?.type as unknown as MariaDbColumnType |
| 152 | |
| 153 | if (value === null) { |
| 154 | return null |
| 155 | } |
| 156 | |
| 157 | switch (type) { |
| 158 | case MariaDbColumnType.TIMESTAMP: |
| 159 | case MariaDbColumnType.TIMESTAMP2: |
| 160 | case MariaDbColumnType.DATETIME: |
| 161 | case MariaDbColumnType.DATETIME2: |
| 162 | return new Date(`${value}Z`).toISOString().replace(/(\.000)?Z$/, '+00:00') |
| 163 | } |
| 164 | |
| 165 | if (typeof value === 'bigint') { |
| 166 | return value.toString() |
| 167 | } |
| 168 | |
| 169 | return value |
| 170 | }) |
| 171 | } |
| 172 | |
| 173 | export const typeCast: mariadb.TypeCastFunction = (field, next) => { |
| 174 | if ((field.type as unknown as MariaDbColumnType) === MariaDbColumnType.GEOMETRY) { |
no test coverage detected