feat: add check for uniqueness when creating links with isList=false (#11767)

This commit is contained in:
Harminder Virk
2025-03-17 13:23:18 +05:30
committed by GitHub
parent 879c623705
commit cae47d9e49
5 changed files with 145 additions and 26 deletions

View File

@@ -125,7 +125,8 @@ function buildFieldAlias(fieldAliases?: Shortcut | Shortcut[]) {
}
function prepareServiceConfig(
input: DefineLinkInputSource | DefineReadOnlyLinkInputSource
input: DefineLinkInputSource | DefineReadOnlyLinkInputSource,
defaultOptions?: { isList?: boolean }
) {
let serviceConfig = {} as ModuleLinkableKeyConfig
@@ -137,7 +138,7 @@ function prepareServiceConfig(
alias: source.alias ?? camelToSnakeCase(source.field ?? ""),
field: input.field ?? source.field,
primaryKey: source.primaryKey,
isList: false,
isList: defaultOptions?.isList ?? false,
deleteCascade: false,
module: source.serviceName,
entity: source.entity,
@@ -152,7 +153,7 @@ function prepareServiceConfig(
alias: source.alias ?? camelToSnakeCase(source.field ?? ""),
field: input.field ?? source.field,
primaryKey: source.primaryKey,
isList: input.isList ?? false,
isList: input.isList ?? defaultOptions?.isList ?? false,
deleteCascade: input.deleteCascade ?? false,
module: source.serviceName,
entity: source.entity,
@@ -183,8 +184,8 @@ export function defineLink(
rightService: DefineLinkInputSource | DefineReadOnlyLinkInputSource,
linkServiceOptions?: ExtraOptions | ReadOnlyExtraOptions
): DefineLinkExport {
const serviceAObj = prepareServiceConfig(leftService)
const serviceBObj = prepareServiceConfig(rightService)
const serviceAObj = prepareServiceConfig(leftService, { isList: true })
const serviceBObj = prepareServiceConfig(rightService, { isList: false })
if (linkServiceOptions?.readOnly) {
return defineReadOnlyLink(
@@ -373,6 +374,7 @@ ${serviceBObj.module}: {
methodSuffix: serviceAMethodSuffix,
},
deleteCascade: serviceAObj.deleteCascade,
isList: serviceAObj.isList,
},
{
serviceName: serviceBObj.module,
@@ -384,6 +386,7 @@ ${serviceBObj.module}: {
methodSuffix: serviceBMethodSuffix,
},
deleteCascade: serviceBObj.deleteCascade,
isList: serviceBObj.isList,
},
],
extends: [