0.1.7•Updated a month ago
declare namespace DB {
type Lookup<LookupOriginClass extends DB.Entity, LookupTargetClass extends DB.Entity.typeofClass, Field extends string, IsSingular extends boolean> = {
entity: LookupTargetClass
as: Field
localField: keyof Entity.Clean<LookupOriginClass>
foreignField: keyof Entity.Clean<InstanceType<LookupTargetClass>>
filter?: DB.Filterable<InstanceType<LookupTargetClass>>
required?: boolean
} & (
IsSingular extends true ? {
isArray: false
} : {
isArray?: true
}
)
namespace Lookup {
type ReturnType<T extends Entity.Class, Target extends Entity.typeofClass, Field extends string, IsSingular extends boolean> = Entity.Query<T & Record<Field, IsSingular extends true ? (InstanceType<Target> | null) : InstanceType<Target>[]>>
type Config<T extends Entity.Class, Target extends Entity.typeofClass, Field extends string, IsSingular extends boolean> = Omit<Lookup<T, Target, Field, IsSingular>, 'entity' | 'isArray' | 'as'>
}
}