generate references (#7882)
This commit is contained in:
1 parent
b9036eca1a
commit
dd864da4e0
2424 files changed
+106679
-116201
No files matched your search
@@ -8,9 +8,29 @@ export function isDmlEntity(reflection: DeclarationReflection) {
|
||||
return reflection.type.name === "DmlEntity"
|
||||
}
|
||||
|
||||
export const RELATION_NAMES = ["HasOne", "HasMany", "BelongsTo", "ManyToMany"]
|
||||
|
||||
export function isDmlRelation(reflection: DeclarationReflection) {
|
||||
if (reflection.type?.type !== "reference") {
|
||||
return false
|
||||
}
|
||||
|
||||
const reflectionType = reflection.type
|
||||
|
||||
return RELATION_NAMES.some((relatioName) =>
|
||||
reflectionType.name.startsWith(relatioName)
|
||||
)
|
||||
}
|
||||
|
||||
const MAX_LEVEL = 2
|
||||
|
||||
export function getDmlProperties(
|
||||
reflectionType: ReferenceType
|
||||
reflectionType: ReferenceType,
|
||||
level = 1
|
||||
): DeclarationReflection[] {
|
||||
if (level > MAX_LEVEL) {
|
||||
return []
|
||||
}
|
||||
if (
|
||||
!reflectionType.typeArguments?.length ||
|
||||
reflectionType.typeArguments[0].type !== "intersection"
|
||||
@@ -22,3 +42,21 @@ export function getDmlProperties(
|
||||
|
||||
return schemaType.declaration.children || []
|
||||
}
|
||||
|
||||
export function getDmlRelationProperties(
|
||||
reflectionType: ReferenceType
|
||||
): DeclarationReflection[] {
|
||||
if (
|
||||
!reflectionType.typeArguments?.length ||
|
||||
reflectionType.typeArguments[0].type !== "reference" ||
|
||||
!(
|
||||
reflectionType.typeArguments[0].reflection instanceof
|
||||
DeclarationReflection
|
||||
) ||
|
||||
reflectionType.typeArguments[0].reflection.type?.type !== "reference"
|
||||
) {
|
||||
return []
|
||||
}
|
||||
|
||||
return getDmlProperties(reflectionType.typeArguments[0].reflection.type)
|
||||
}
|
||||
Reference in new issue
Block a user