Skip to content

Commit e249771

Browse files
committed
feat(orm): exclude function fields from FieldName type
1 parent e135620 commit e249771

File tree

2 files changed

+3
-2
lines changed

2 files changed

+3
-2
lines changed

Diff for: packages/orm/src/utils.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ import { getInstanceStateFromItem } from './identity-map';
1616
import { getClassTypeFromInstance } from '@deepkit/core';
1717

1818
export type FlattenIfArray<T> = T extends Array<any> ? T[0] : T;
19-
export type FieldName<T> = keyof T & string;
19+
export type FieldName<T> = { [Key in keyof T & string]: T[Key] extends Function ? never : Key }[keyof T & string];
2020

2121
export function getClassSchemaInstancePairs<T extends OrmEntity>(items: Iterable<T>): Map<ReflectionClass<any>, T[]> {
2222
const map = new Map<ReflectionClass<any>, T[]>();

Diff for: packages/orm/tests/query.spec.ts

+2-1
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ import { assert, IsExact } from 'conditional-type-checks';
44
import { Database } from '../src/database';
55
import { MemoryDatabaseAdapter, MemoryQuery } from '../src/memory-db';
66
import { Query } from '../src/query';
7+
import { FieldName } from "../src/utils";
78

89
test('query select', async () => {
910
class s {
@@ -54,7 +55,7 @@ test('query lift', async () => {
5455

5556
class UserQuery<T extends { username: string }> extends MyBase<T> {
5657
findAllUserNames() {
57-
return this.findField('username');
58+
return this.findField('username' as FieldName<T>);
5859
}
5960

6061
//query classes should be able to infer the actual used class

0 commit comments

Comments
 (0)