convex-selections
Advanced tools
Comparing version
@@ -8,3 +8,3 @@ import { UnionToIntersection } from 'type-fest'; | ||
type SelectInputFromDataModel<$DataModel, $TableName extends string> = { | ||
[K in keyof $DataModel[$TableName]['document']]?: NonNullable<$DataModel[$TableName]['document'][K]> extends Array<infer $Item> ? NonNullable<$Item> extends GenericId<infer $SelectedTableName> ? { | ||
[K in keyof $DataModel[$TableName]['document']]?: NonNullable<$DataModel[$TableName]['document'][K]> extends Array<infer $Item> ? NonNullable<$Item> extends GenericId<infer $SelectedTableName> ? $SelectedTableName extends $TableName ? true : { | ||
select: SelectInputFromDataModel<$DataModel, $SelectedTableName>; | ||
@@ -15,3 +15,3 @@ } : NonNullable<$Item> extends RelationArray<infer $SelectedTableName> ? { | ||
select: SelectInputFromDataModel<$DataModel, $SelectedTableName>; | ||
} : true : NonNullable<$DataModel[$TableName]['document'][K]> extends GenericId<infer $SelectedTableName> ? { | ||
} : true : NonNullable<$DataModel[$TableName]['document'][K]> extends GenericId<infer $SelectedTableName> ? $SelectedTableName extends $TableName ? true : { | ||
select: SelectInputFromDataModel<$DataModel, $SelectedTableName>; | ||
@@ -26,4 +26,4 @@ } : NonNullable<$DataModel[$TableName]['document'][K]> extends RelationArray<infer $SelectedTableName> ? { | ||
[K in keyof $Select]: $Select[K] extends true ? K extends keyof $DataModel[$TableName]['document'] ? $DataModel[$TableName]['document'][K] : never : $Select[K] extends { | ||
select: infer $NestedSelect extends SelectInputFromDataModel<$DataModel, any>; | ||
} ? K extends keyof $DataModel[$TableName]['document'] ? NonNullable<$DataModel[$TableName]['document'][K]> extends GenericId<infer $RefTableName>[] ? SelectOutputFromDataModel<$DataModel, $RefTableName, $NestedSelect>[] | (null extends $DataModel[$TableName]['document'][K] ? null : never) : NonNullable<$DataModel[$TableName]['document'][K]> extends GenericId<infer $RefTableName> ? SelectOutputFromDataModel<$DataModel, $RefTableName, $NestedSelect> | (null extends NonNullable<$DataModel[$TableName]['document'][K]> ? null : never) : never : never : never; | ||
select: infer $NestedSelect; | ||
} ? K extends keyof $DataModel[$TableName]['document'] ? NonNullable<$DataModel[$TableName]['document'][K]> extends GenericId<infer $RefTableName>[] ? SelectOutputFromDataModel<$DataModel, $RefTableName, $NestedSelect>[] | (null extends $DataModel[$TableName]['document'][K] ? null : never) : NonNullable<$DataModel[$TableName]['document'][K]> extends RelationArray<infer $RefTableName> ? SelectOutputFromDataModel<$DataModel, $RefTableName, $NestedSelect>[] : NonNullable<$DataModel[$TableName]['document'][K]> extends GenericId<infer $RefTableName> ? SelectOutputFromDataModel<$DataModel, $RefTableName, $NestedSelect> | (null extends $DataModel[$TableName]['document'][K] ? null : never) : NonNullable<$DataModel[$TableName]['document'][K]> extends Relation<infer $RefTableName> ? SelectOutputFromDataModel<$DataModel, $RefTableName, $NestedSelect> : never : never : never; | ||
}; | ||
@@ -30,0 +30,0 @@ |
@@ -5,3 +5,3 @@ { | ||
"type": "module", | ||
"version": "0.0.5", | ||
"version": "0.0.6", | ||
"exports": { | ||
@@ -8,0 +8,0 @@ ".": "./index.js", |
import type { GenericId } from 'convex/values'; | ||
import type { Relation, RelationArray } from '../types/relation.js'; | ||
export type SelectInputFromDataModel<$DataModel, $TableName extends string> = { | ||
[K in keyof $DataModel[$TableName]['document']]?: NonNullable<$DataModel[$TableName]['document'][K]> extends Array<infer $Item> ? NonNullable<$Item> extends GenericId<infer $SelectedTableName> ? { | ||
[K in keyof $DataModel[$TableName]['document']]?: NonNullable<$DataModel[$TableName]['document'][K]> extends Array<infer $Item> ? NonNullable<$Item> extends GenericId<infer $SelectedTableName> ? $SelectedTableName extends $TableName ? true : { | ||
select: SelectInputFromDataModel<$DataModel, $SelectedTableName>; | ||
@@ -10,3 +10,3 @@ } : NonNullable<$Item> extends RelationArray<infer $SelectedTableName> ? { | ||
select: SelectInputFromDataModel<$DataModel, $SelectedTableName>; | ||
} : true : NonNullable<$DataModel[$TableName]['document'][K]> extends GenericId<infer $SelectedTableName> ? { | ||
} : true : NonNullable<$DataModel[$TableName]['document'][K]> extends GenericId<infer $SelectedTableName> ? $SelectedTableName extends $TableName ? true : { | ||
select: SelectInputFromDataModel<$DataModel, $SelectedTableName>; | ||
@@ -21,4 +21,4 @@ } : NonNullable<$DataModel[$TableName]['document'][K]> extends RelationArray<infer $SelectedTableName> ? { | ||
[K in keyof $Select]: $Select[K] extends true ? K extends keyof $DataModel[$TableName]['document'] ? $DataModel[$TableName]['document'][K] : never : $Select[K] extends { | ||
select: infer $NestedSelect extends SelectInputFromDataModel<$DataModel, any>; | ||
} ? K extends keyof $DataModel[$TableName]['document'] ? NonNullable<$DataModel[$TableName]['document'][K]> extends GenericId<infer $RefTableName>[] ? SelectOutputFromDataModel<$DataModel, $RefTableName, $NestedSelect>[] | (null extends $DataModel[$TableName]['document'][K] ? null : never) : NonNullable<$DataModel[$TableName]['document'][K]> extends GenericId<infer $RefTableName> ? SelectOutputFromDataModel<$DataModel, $RefTableName, $NestedSelect> | (null extends NonNullable<$DataModel[$TableName]['document'][K]> ? null : never) : never : never : never; | ||
select: infer $NestedSelect; | ||
} ? K extends keyof $DataModel[$TableName]['document'] ? NonNullable<$DataModel[$TableName]['document'][K]> extends GenericId<infer $RefTableName>[] ? SelectOutputFromDataModel<$DataModel, $RefTableName, $NestedSelect>[] | (null extends $DataModel[$TableName]['document'][K] ? null : never) : NonNullable<$DataModel[$TableName]['document'][K]> extends RelationArray<infer $RefTableName> ? SelectOutputFromDataModel<$DataModel, $RefTableName, $NestedSelect>[] : NonNullable<$DataModel[$TableName]['document'][K]> extends GenericId<infer $RefTableName> ? SelectOutputFromDataModel<$DataModel, $RefTableName, $NestedSelect> | (null extends $DataModel[$TableName]['document'][K] ? null : never) : NonNullable<$DataModel[$TableName]['document'][K]> extends Relation<infer $RefTableName> ? SelectOutputFromDataModel<$DataModel, $RefTableName, $NestedSelect> : never : never : never; | ||
}; |
31866
2.31%420
0.48%