1
0
Fork 0
mirror of synced 2024-08-05 13:21:26 +12:00

Tidying up one of the weirder things knex can do.

This commit is contained in:
mike12345567 2024-06-14 19:10:52 +01:00
parent 654a417d66
commit c34c219e8f
4 changed files with 15 additions and 5 deletions

View file

@ -30,6 +30,7 @@ import {
buildExternalRelationships,
buildSqlFieldList,
generateIdForRow,
isKnexNoRowReadResponse,
isManyToMany,
sqlOutputProcessing,
} from "./utils"
@ -433,8 +434,7 @@ export class ExternalRequest<T extends Operation> {
})
// this is the response from knex if no rows found
const rows: Row[] =
!Array.isArray(response) ||
(response.length === 1 && "read" in response[0])
!Array.isArray(response) || isKnexNoRowReadResponse(response)
? []
: response
const storeTo = isManyToMany(field)

View file

@ -1,4 +1,6 @@
import {
DatasourcePlusQueryResponse,
DSPlusOperation,
FieldType,
ManyToManyRelationshipFieldMetadata,
RelationshipFieldMetadata,
@ -192,3 +194,11 @@ export function buildSqlFieldList(
}
return fields
}
export function isKnexNoRowReadResponse(resp: DatasourcePlusQueryResponse) {
return (
!Array.isArray(resp) ||
resp.length === 0 ||
(DSPlusOperation.READ in resp[0] && resp[0].read === true)
)
}

View file

@ -14,7 +14,7 @@ import {
processDates,
processFormulas,
} from "../../../../utilities/rowProcessor"
import { updateRelationshipColumns } from "./sqlUtils"
import { isKnexNoRowReadResponse, updateRelationshipColumns } from "./sqlUtils"
import {
basicProcessing,
generateIdForRow,
@ -137,7 +137,7 @@ export async function sqlOutputProcessing(
relationships: RelationshipsJson[],
opts?: { sqs?: boolean }
): Promise<Row[]> {
if (!Array.isArray(rows) || rows.length === 0 || "read" in rows[0]) {
if (isKnexNoRowReadResponse(rows)) {
return []
}
let finalRows: { [key: string]: Row } = {}

View file

@ -187,7 +187,7 @@ export interface Schema {
}
// return these when an operation occurred but we got no response
enum DSPlusOperation {
export enum DSPlusOperation {
CREATE = "create",
READ = "read",
UPDATE = "update",