1 parent
837ed093e3
commit
46f15b4909
4 files changed
+191
-152
No files matched your search
@@ -121,8 +121,7 @@ export interface EntityConstructor<Props> extends Function {
|
|||||||
* From a IDmlEntity, infer the foreign keys name and type for
|
* From a IDmlEntity, infer the foreign keys name and type for
|
||||||
* "belongsTo" relation meaning "hasOne" and "ManyToOne"
|
* "belongsTo" relation meaning "hasOne" and "ManyToOne"
|
||||||
*/
|
*/
|
||||||
export type InferForeignKeys<T> = T extends IDmlEntity<infer Schema>
|
export type InferForeignKeys<Schema extends DMLSchema> = {
|
||||||
? {
|
|
||||||
[K in keyof Schema as Schema[K] extends { type: infer Type }
|
[K in keyof Schema as Schema[K] extends { type: infer Type }
|
||||||
? Type extends RelationshipTypes
|
? Type extends RelationshipTypes
|
||||||
? `${K & string}_id`
|
? `${K & string}_id`
|
||||||
@@ -133,21 +132,60 @@ export type InferForeignKeys<T> = T extends IDmlEntity<infer Schema>
|
|||||||
: Schema[K]
|
: Schema[K]
|
||||||
: Schema[K]
|
: Schema[K]
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Infer fields for a belongsTo relationship
|
||||||
|
*/
|
||||||
|
export type InferBelongsToFields<Relation> = Relation extends () => IDmlEntity<
|
||||||
|
infer R
|
||||||
|
>
|
||||||
|
? InferSchemaFields<R>
|
||||||
|
: Relation extends () => IDmlEntity<infer R> | null
|
||||||
|
? InferSchemaFields<R> | null
|
||||||
: never
|
: never
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Infer fields for a hasOne relationship
|
||||||
|
*/
|
||||||
|
export type InferHasOneFields<Relation> = InferBelongsToFields<Relation>
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Infer fields for hasMany relationship
|
||||||
|
*/
|
||||||
|
export type InferHasManyFields<Relation> = Relation extends () => IDmlEntity<
|
||||||
|
infer R
|
||||||
|
>
|
||||||
|
? InferSchemaFields<R>[]
|
||||||
|
: never
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Infer fields for manyToMany relationship
|
||||||
|
*/
|
||||||
|
export type InferManyToManyFields<Relation> = InferHasManyFields<Relation>
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Inferring the types of the schema fields from the DML
|
||||||
|
* entity
|
||||||
|
*/
|
||||||
|
export type InferSchemaFields<Schema extends DMLSchema> = {
|
||||||
|
[K in keyof Schema]: Schema[K] extends RelationshipType<any>
|
||||||
|
? Schema[K]["type"] extends "belongsTo"
|
||||||
|
? InferBelongsToFields<Schema[K]["$dataType"]>
|
||||||
|
: Schema[K]["type"] extends "hasOne"
|
||||||
|
? InferHasOneFields<Schema[K]["$dataType"]>
|
||||||
|
: Schema[K]["type"] extends "hasMany"
|
||||||
|
? InferHasManyFields<Schema[K]["$dataType"]>
|
||||||
|
: Schema[K]["type"] extends "manyToMany"
|
||||||
|
? InferManyToManyFields<Schema[K]["$dataType"]>
|
||||||
|
: never
|
||||||
|
: Schema[K]["$dataType"]
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Helper to infer the schema type of a DmlEntity
|
* Helper to infer the schema type of a DmlEntity
|
||||||
*/
|
*/
|
||||||
export type Infer<T> = T extends IDmlEntity<infer Schema>
|
export type Infer<T> = T extends IDmlEntity<infer Schema>
|
||||||
? EntityConstructor<
|
? EntityConstructor<InferSchemaFields<Schema>>
|
||||||
{
|
|
||||||
[K in keyof Schema]: Schema[K]["$dataType"] extends () => infer R
|
|
||||||
? Infer<R>
|
|
||||||
: Schema[K]["$dataType"] extends (() => infer R) | null
|
|
||||||
? Infer<R> | null
|
|
||||||
: Schema[K]["$dataType"]
|
|
||||||
} & InferForeignKeys<T>
|
|
||||||
>
|
|
||||||
: never
|
: never
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -200,7 +238,7 @@ export type InferIndexableProperties<T> = keyof (T extends IDmlEntity<
|
|||||||
? never
|
? never
|
||||||
: K
|
: K
|
||||||
: K]: string
|
: K]: string
|
||||||
} & InferForeignKeys<T>
|
} & InferForeignKeys<Schema>
|
||||||
: never)
|
: never)
|
||||||
|
|
||||||
export type EntityIndex<
|
export type EntityIndex<
|
||||||
|
|||||||
@@ -1,4 +1,3 @@
|
|||||||
import { EntityConstructor } from "@medusajs/types"
|
|
||||||
import { ArrayType, MetadataStorage } from "@mikro-orm/core"
|
import { ArrayType, MetadataStorage } from "@mikro-orm/core"
|
||||||
import { expectTypeOf } from "expect-type"
|
import { expectTypeOf } from "expect-type"
|
||||||
import { DmlEntity } from "../entity"
|
import { DmlEntity } from "../entity"
|
||||||
@@ -77,7 +76,6 @@ describe("Entity builder", () => {
|
|||||||
expect(user.parse().tableName).toEqual("user")
|
expect(user.parse().tableName).toEqual("user")
|
||||||
|
|
||||||
const User = toMikroORMEntity(user)
|
const User = toMikroORMEntity(user)
|
||||||
|
|
||||||
expectTypeOf(new User()).toMatchTypeOf<{
|
expectTypeOf(new User()).toMatchTypeOf<{
|
||||||
id: number
|
id: number
|
||||||
username: string
|
username: string
|
||||||
@@ -1808,15 +1806,20 @@ describe("Entity builder", () => {
|
|||||||
})
|
})
|
||||||
|
|
||||||
const User = toMikroORMEntity(user)
|
const User = toMikroORMEntity(user)
|
||||||
expectTypeOf(new User()).toMatchTypeOf<{
|
|
||||||
|
expectTypeOf(new User()).toEqualTypeOf<{
|
||||||
id: number
|
id: number
|
||||||
username: string
|
username: string
|
||||||
|
created_at: Date
|
||||||
|
updated_at: Date
|
||||||
deleted_at: Date | null
|
deleted_at: Date | null
|
||||||
email: EntityConstructor<{
|
email: {
|
||||||
email: string
|
email: string
|
||||||
isVerified: boolean
|
isVerified: boolean
|
||||||
|
created_at: Date
|
||||||
|
updated_at: Date
|
||||||
deleted_at: Date | null
|
deleted_at: Date | null
|
||||||
}>
|
}
|
||||||
}>()
|
}>()
|
||||||
|
|
||||||
const metaData = MetadataStorage.getMetadataFromDecorator(User)
|
const metaData = MetadataStorage.getMetadataFromDecorator(User)
|
||||||
@@ -1901,11 +1904,11 @@ describe("Entity builder", () => {
|
|||||||
id: number
|
id: number
|
||||||
username: string
|
username: string
|
||||||
deleted_at: Date | null
|
deleted_at: Date | null
|
||||||
emails: EntityConstructor<{
|
emails: {
|
||||||
email: string
|
email: string
|
||||||
isVerified: boolean
|
isVerified: boolean
|
||||||
deleted_at: Date | null
|
deleted_at: Date | null
|
||||||
}> | null
|
} | null
|
||||||
}>()
|
}>()
|
||||||
|
|
||||||
const metaData = MetadataStorage.getMetadataFromDecorator(User)
|
const metaData = MetadataStorage.getMetadataFromDecorator(User)
|
||||||
@@ -1988,7 +1991,7 @@ describe("Entity builder", () => {
|
|||||||
expectTypeOf(new User()).toMatchTypeOf<{
|
expectTypeOf(new User()).toMatchTypeOf<{
|
||||||
id: number
|
id: number
|
||||||
username: string
|
username: string
|
||||||
email: EntityConstructor<{ email: string; isVerified: boolean }>
|
email: { email: string; isVerified: boolean }
|
||||||
}>()
|
}>()
|
||||||
|
|
||||||
const metaData = MetadataStorage.getMetadataFromDecorator(User)
|
const metaData = MetadataStorage.getMetadataFromDecorator(User)
|
||||||
@@ -2075,7 +2078,7 @@ describe("Entity builder", () => {
|
|||||||
expectTypeOf(new User()).toMatchTypeOf<{
|
expectTypeOf(new User()).toMatchTypeOf<{
|
||||||
id: number
|
id: number
|
||||||
username: string
|
username: string
|
||||||
email: EntityConstructor<{ email: string; isVerified: boolean }>
|
email: { email: string; isVerified: boolean }
|
||||||
}>()
|
}>()
|
||||||
|
|
||||||
const metaData = MetadataStorage.getMetadataFromDecorator(User)
|
const metaData = MetadataStorage.getMetadataFromDecorator(User)
|
||||||
@@ -2221,14 +2224,14 @@ describe("Entity builder", () => {
|
|||||||
expectTypeOf(new User()).toMatchTypeOf<{
|
expectTypeOf(new User()).toMatchTypeOf<{
|
||||||
id: number
|
id: number
|
||||||
username: string
|
username: string
|
||||||
email: EntityConstructor<{
|
email: {
|
||||||
email: string
|
email: string
|
||||||
isVerified: boolean
|
isVerified: boolean
|
||||||
user: EntityConstructor<{
|
user: {
|
||||||
id: number
|
id: number
|
||||||
username: string
|
username: string
|
||||||
}>
|
}
|
||||||
}>
|
}
|
||||||
}>()
|
}>()
|
||||||
|
|
||||||
const metaData = MetadataStorage.getMetadataFromDecorator(User)
|
const metaData = MetadataStorage.getMetadataFromDecorator(User)
|
||||||
@@ -2661,7 +2664,7 @@ describe("Entity builder", () => {
|
|||||||
expectTypeOf(new User()).toMatchTypeOf<{
|
expectTypeOf(new User()).toMatchTypeOf<{
|
||||||
id: number
|
id: number
|
||||||
username: string
|
username: string
|
||||||
emails: EntityConstructor<{ email: string; isVerified: boolean }>
|
emails: { email: string; isVerified: boolean }[]
|
||||||
}>()
|
}>()
|
||||||
|
|
||||||
const metaData = MetadataStorage.getMetadataFromDecorator(User)
|
const metaData = MetadataStorage.getMetadataFromDecorator(User)
|
||||||
@@ -2747,7 +2750,7 @@ describe("Entity builder", () => {
|
|||||||
expectTypeOf(new User()).toMatchTypeOf<{
|
expectTypeOf(new User()).toMatchTypeOf<{
|
||||||
id: number
|
id: number
|
||||||
username: string
|
username: string
|
||||||
emails: EntityConstructor<{ email: string; isVerified: boolean }> | null
|
emails: { email: string; isVerified: boolean }[]
|
||||||
}>()
|
}>()
|
||||||
|
|
||||||
const metaData = MetadataStorage.getMetadataFromDecorator(User)
|
const metaData = MetadataStorage.getMetadataFromDecorator(User)
|
||||||
@@ -2834,7 +2837,7 @@ describe("Entity builder", () => {
|
|||||||
expectTypeOf(new User()).toMatchTypeOf<{
|
expectTypeOf(new User()).toMatchTypeOf<{
|
||||||
id: number
|
id: number
|
||||||
username: string
|
username: string
|
||||||
emails: EntityConstructor<{ email: string; isVerified: boolean }>
|
emails: { email: string; isVerified: boolean }[]
|
||||||
}>()
|
}>()
|
||||||
|
|
||||||
const metaData = MetadataStorage.getMetadataFromDecorator(User)
|
const metaData = MetadataStorage.getMetadataFromDecorator(User)
|
||||||
@@ -2924,7 +2927,7 @@ describe("Entity builder", () => {
|
|||||||
expectTypeOf(new User()).toMatchTypeOf<{
|
expectTypeOf(new User()).toMatchTypeOf<{
|
||||||
id: number
|
id: number
|
||||||
username: string
|
username: string
|
||||||
emails: EntityConstructor<{ email: string; isVerified: boolean }>
|
emails: { email: string; isVerified: boolean }[]
|
||||||
}>()
|
}>()
|
||||||
|
|
||||||
const metaData = MetadataStorage.getMetadataFromDecorator(User)
|
const metaData = MetadataStorage.getMetadataFromDecorator(User)
|
||||||
@@ -3087,32 +3090,32 @@ describe("Entity builder", () => {
|
|||||||
id: number
|
id: number
|
||||||
username: string
|
username: string
|
||||||
deleted_at: Date | null
|
deleted_at: Date | null
|
||||||
email: EntityConstructor<{
|
email: {
|
||||||
email: string
|
email: string
|
||||||
isVerified: boolean
|
isVerified: boolean
|
||||||
deleted_at: Date | null
|
deleted_at: Date | null
|
||||||
user: EntityConstructor<{
|
user: {
|
||||||
id: number
|
id: number
|
||||||
username: string
|
username: string
|
||||||
deleted_at: Date | null
|
deleted_at: Date | null
|
||||||
}>
|
}
|
||||||
}>
|
}
|
||||||
}>()
|
}>()
|
||||||
|
|
||||||
expectTypeOf(new Email()).toMatchTypeOf<{
|
expectTypeOf(new Email()).toMatchTypeOf<{
|
||||||
email: string
|
email: string
|
||||||
isVerified: boolean
|
isVerified: boolean
|
||||||
deleted_at: Date | null
|
deleted_at: Date | null
|
||||||
user: EntityConstructor<{
|
user: {
|
||||||
id: number
|
id: number
|
||||||
username: string
|
username: string
|
||||||
deleted_at: Date | null
|
deleted_at: Date | null
|
||||||
email: EntityConstructor<{
|
email: {
|
||||||
email: string
|
email: string
|
||||||
isVerified: boolean
|
isVerified: boolean
|
||||||
deleted_at: Date | null
|
deleted_at: Date | null
|
||||||
}>
|
}
|
||||||
}>
|
}
|
||||||
}>()
|
}>()
|
||||||
|
|
||||||
const metaData = MetadataStorage.getMetadataFromDecorator(User)
|
const metaData = MetadataStorage.getMetadataFromDecorator(User)
|
||||||
@@ -3272,27 +3275,27 @@ describe("Entity builder", () => {
|
|||||||
expectTypeOf(new User()).toMatchTypeOf<{
|
expectTypeOf(new User()).toMatchTypeOf<{
|
||||||
id: number
|
id: number
|
||||||
username: string
|
username: string
|
||||||
email: EntityConstructor<{
|
email: {
|
||||||
email: string
|
email: string
|
||||||
isVerified: boolean
|
isVerified: boolean
|
||||||
user: EntityConstructor<{
|
user: {
|
||||||
id: number
|
id: number
|
||||||
username: string
|
username: string
|
||||||
}> | null
|
} | null
|
||||||
}>
|
}
|
||||||
}>()
|
}>()
|
||||||
|
|
||||||
expectTypeOf(new Email()).toMatchTypeOf<{
|
expectTypeOf(new Email()).toMatchTypeOf<{
|
||||||
email: string
|
email: string
|
||||||
isVerified: boolean
|
isVerified: boolean
|
||||||
user: EntityConstructor<{
|
user: {
|
||||||
id: number
|
id: number
|
||||||
username: string
|
username: string
|
||||||
email: EntityConstructor<{
|
email: {
|
||||||
email: string
|
email: string
|
||||||
isVerified: boolean
|
isVerified: boolean
|
||||||
}>
|
}
|
||||||
}> | null
|
} | null
|
||||||
}>()
|
}>()
|
||||||
|
|
||||||
const metaData = MetadataStorage.getMetadataFromDecorator(User)
|
const metaData = MetadataStorage.getMetadataFromDecorator(User)
|
||||||
@@ -3452,27 +3455,27 @@ describe("Entity builder", () => {
|
|||||||
expectTypeOf(new User()).toMatchTypeOf<{
|
expectTypeOf(new User()).toMatchTypeOf<{
|
||||||
id: number
|
id: number
|
||||||
username: string
|
username: string
|
||||||
emails: EntityConstructor<{
|
emails: {
|
||||||
email: string
|
email: string
|
||||||
isVerified: boolean
|
isVerified: boolean
|
||||||
user: EntityConstructor<{
|
user: {
|
||||||
id: number
|
id: number
|
||||||
username: string
|
username: string
|
||||||
}>
|
}
|
||||||
}>
|
}[]
|
||||||
}>()
|
}>()
|
||||||
|
|
||||||
expectTypeOf(new Email()).toMatchTypeOf<{
|
expectTypeOf(new Email()).toMatchTypeOf<{
|
||||||
email: string
|
email: string
|
||||||
isVerified: boolean
|
isVerified: boolean
|
||||||
user: EntityConstructor<{
|
user: {
|
||||||
id: number
|
id: number
|
||||||
username: string
|
username: string
|
||||||
emails: EntityConstructor<{
|
emails: {
|
||||||
email: string
|
email: string
|
||||||
isVerified: boolean
|
isVerified: boolean
|
||||||
}>
|
}[]
|
||||||
}>
|
}
|
||||||
}>()
|
}>()
|
||||||
|
|
||||||
const metaData = MetadataStorage.getMetadataFromDecorator(User)
|
const metaData = MetadataStorage.getMetadataFromDecorator(User)
|
||||||
@@ -3631,27 +3634,27 @@ describe("Entity builder", () => {
|
|||||||
expectTypeOf(new User()).toMatchTypeOf<{
|
expectTypeOf(new User()).toMatchTypeOf<{
|
||||||
id: number
|
id: number
|
||||||
username: string
|
username: string
|
||||||
emails: EntityConstructor<{
|
emails: {
|
||||||
email: string
|
email: string
|
||||||
isVerified: boolean
|
isVerified: boolean
|
||||||
user: EntityConstructor<{
|
user: {
|
||||||
id: number
|
id: number
|
||||||
username: string
|
username: string
|
||||||
}> | null
|
} | null
|
||||||
}>
|
}[]
|
||||||
}>()
|
}>()
|
||||||
|
|
||||||
expectTypeOf(new Email()).toMatchTypeOf<{
|
expectTypeOf(new Email()).toMatchTypeOf<{
|
||||||
email: string
|
email: string
|
||||||
isVerified: boolean
|
isVerified: boolean
|
||||||
user: EntityConstructor<{
|
user: {
|
||||||
id: number
|
id: number
|
||||||
username: string
|
username: string
|
||||||
emails: EntityConstructor<{
|
emails: {
|
||||||
email: string
|
email: string
|
||||||
isVerified: boolean
|
isVerified: boolean
|
||||||
}>
|
}[]
|
||||||
}> | null
|
} | null
|
||||||
}>()
|
}>()
|
||||||
|
|
||||||
const metaData = MetadataStorage.getMetadataFromDecorator(User)
|
const metaData = MetadataStorage.getMetadataFromDecorator(User)
|
||||||
@@ -3869,32 +3872,32 @@ describe("Entity builder", () => {
|
|||||||
id: number
|
id: number
|
||||||
username: string
|
username: string
|
||||||
deleted_at: Date | null
|
deleted_at: Date | null
|
||||||
email: EntityConstructor<{
|
email: {
|
||||||
email: string
|
email: string
|
||||||
isVerified: boolean
|
isVerified: boolean
|
||||||
deleted_at: Date | null
|
deleted_at: Date | null
|
||||||
user: EntityConstructor<{
|
user: {
|
||||||
id: number
|
id: number
|
||||||
username: string
|
username: string
|
||||||
deleted_at: Date | null
|
deleted_at: Date | null
|
||||||
}>
|
}
|
||||||
}>
|
}
|
||||||
}>()
|
}>()
|
||||||
|
|
||||||
expectTypeOf(new Email()).toMatchTypeOf<{
|
expectTypeOf(new Email()).toMatchTypeOf<{
|
||||||
email: string
|
email: string
|
||||||
isVerified: boolean
|
isVerified: boolean
|
||||||
deleted_at: Date | null
|
deleted_at: Date | null
|
||||||
user: EntityConstructor<{
|
user: {
|
||||||
id: number
|
id: number
|
||||||
username: string
|
username: string
|
||||||
deleted_at: Date | null
|
deleted_at: Date | null
|
||||||
email: EntityConstructor<{
|
email: {
|
||||||
email: string
|
email: string
|
||||||
isVerified: boolean
|
isVerified: boolean
|
||||||
deleted_at: Date | null
|
deleted_at: Date | null
|
||||||
}>
|
}
|
||||||
}>
|
}
|
||||||
}>()
|
}>()
|
||||||
|
|
||||||
const metaData = MetadataStorage.getMetadataFromDecorator(User)
|
const metaData = MetadataStorage.getMetadataFromDecorator(User)
|
||||||
@@ -4057,32 +4060,32 @@ describe("Entity builder", () => {
|
|||||||
id: number
|
id: number
|
||||||
username: string
|
username: string
|
||||||
deleted_at: Date | null
|
deleted_at: Date | null
|
||||||
email: EntityConstructor<{
|
email: {
|
||||||
email: string
|
email: string
|
||||||
isVerified: boolean
|
isVerified: boolean
|
||||||
deleted_at: Date | null
|
deleted_at: Date | null
|
||||||
user: EntityConstructor<{
|
user: {
|
||||||
id: number
|
id: number
|
||||||
username: string
|
username: string
|
||||||
deleted_at: Date | null
|
deleted_at: Date | null
|
||||||
}>
|
}
|
||||||
}>
|
}
|
||||||
}>()
|
}>()
|
||||||
|
|
||||||
expectTypeOf(new Email()).toMatchTypeOf<{
|
expectTypeOf(new Email()).toMatchTypeOf<{
|
||||||
email: string
|
email: string
|
||||||
isVerified: boolean
|
isVerified: boolean
|
||||||
deleted_at: Date | null
|
deleted_at: Date | null
|
||||||
user: EntityConstructor<{
|
user: {
|
||||||
id: number
|
id: number
|
||||||
username: string
|
username: string
|
||||||
deleted_at: Date | null
|
deleted_at: Date | null
|
||||||
email: EntityConstructor<{
|
email: {
|
||||||
email: string
|
email: string
|
||||||
isVerified: boolean
|
isVerified: boolean
|
||||||
deleted_at: Date | null
|
deleted_at: Date | null
|
||||||
}>
|
}
|
||||||
}>
|
}
|
||||||
}>()
|
}>()
|
||||||
|
|
||||||
const metaData = MetadataStorage.getMetadataFromDecorator(User)
|
const metaData = MetadataStorage.getMetadataFromDecorator(User)
|
||||||
@@ -4246,27 +4249,27 @@ describe("Entity builder", () => {
|
|||||||
expectTypeOf(new User()).toMatchTypeOf<{
|
expectTypeOf(new User()).toMatchTypeOf<{
|
||||||
id: number
|
id: number
|
||||||
username: string
|
username: string
|
||||||
teams: EntityConstructor<{
|
teams: {
|
||||||
id: number
|
id: number
|
||||||
name: string
|
name: string
|
||||||
users: EntityConstructor<{
|
users: {
|
||||||
id: number
|
id: number
|
||||||
username: string
|
username: string
|
||||||
}>
|
}[]
|
||||||
}>
|
}[]
|
||||||
}>()
|
}>()
|
||||||
|
|
||||||
expectTypeOf(new Team()).toMatchTypeOf<{
|
expectTypeOf(new Team()).toMatchTypeOf<{
|
||||||
id: number
|
id: number
|
||||||
name: string
|
name: string
|
||||||
users: EntityConstructor<{
|
users: {
|
||||||
id: number
|
id: number
|
||||||
username: string
|
username: string
|
||||||
teams: EntityConstructor<{
|
teams: {
|
||||||
id: number
|
id: number
|
||||||
name: string
|
name: string
|
||||||
}>
|
}[]
|
||||||
}>
|
}[]
|
||||||
}>()
|
}>()
|
||||||
|
|
||||||
const metaData = MetadataStorage.getMetadataFromDecorator(User)
|
const metaData = MetadataStorage.getMetadataFromDecorator(User)
|
||||||
@@ -4413,27 +4416,27 @@ describe("Entity builder", () => {
|
|||||||
expectTypeOf(new User()).toMatchTypeOf<{
|
expectTypeOf(new User()).toMatchTypeOf<{
|
||||||
id: number
|
id: number
|
||||||
username: string
|
username: string
|
||||||
teams: EntityConstructor<{
|
teams: {
|
||||||
id: number
|
id: number
|
||||||
name: string
|
name: string
|
||||||
users: EntityConstructor<{
|
users: {
|
||||||
id: number
|
id: number
|
||||||
username: string
|
username: string
|
||||||
}>
|
}[]
|
||||||
}>
|
}[]
|
||||||
}>()
|
}>()
|
||||||
|
|
||||||
expectTypeOf(new Team()).toMatchTypeOf<{
|
expectTypeOf(new Team()).toMatchTypeOf<{
|
||||||
id: number
|
id: number
|
||||||
name: string
|
name: string
|
||||||
users: EntityConstructor<{
|
users: {
|
||||||
id: number
|
id: number
|
||||||
username: string
|
username: string
|
||||||
teams: EntityConstructor<{
|
teams: {
|
||||||
id: number
|
id: number
|
||||||
name: string
|
name: string
|
||||||
}>
|
}[]
|
||||||
}>
|
}[]
|
||||||
}>()
|
}>()
|
||||||
|
|
||||||
const metaData = MetadataStorage.getMetadataFromDecorator(User)
|
const metaData = MetadataStorage.getMetadataFromDecorator(User)
|
||||||
@@ -4615,27 +4618,27 @@ describe("Entity builder", () => {
|
|||||||
expectTypeOf(new User()).toMatchTypeOf<{
|
expectTypeOf(new User()).toMatchTypeOf<{
|
||||||
id: number
|
id: number
|
||||||
username: string
|
username: string
|
||||||
teams: EntityConstructor<{
|
teams: {
|
||||||
id: number
|
id: number
|
||||||
name: string
|
name: string
|
||||||
users: EntityConstructor<{
|
users: {
|
||||||
id: number
|
id: number
|
||||||
username: string
|
username: string
|
||||||
}>
|
}[]
|
||||||
}>
|
}[]
|
||||||
}>()
|
}>()
|
||||||
|
|
||||||
expectTypeOf(new Team()).toMatchTypeOf<{
|
expectTypeOf(new Team()).toMatchTypeOf<{
|
||||||
id: number
|
id: number
|
||||||
name: string
|
name: string
|
||||||
users: EntityConstructor<{
|
users: {
|
||||||
id: number
|
id: number
|
||||||
username: string
|
username: string
|
||||||
teams: EntityConstructor<{
|
teams: {
|
||||||
id: number
|
id: number
|
||||||
name: string
|
name: string
|
||||||
}>
|
}[]
|
||||||
}>
|
}[]
|
||||||
}>()
|
}>()
|
||||||
|
|
||||||
const metaData = MetadataStorage.getMetadataFromDecorator(User)
|
const metaData = MetadataStorage.getMetadataFromDecorator(User)
|
||||||
@@ -4789,27 +4792,27 @@ describe("Entity builder", () => {
|
|||||||
expectTypeOf(new User()).toMatchTypeOf<{
|
expectTypeOf(new User()).toMatchTypeOf<{
|
||||||
id: number
|
id: number
|
||||||
username: string
|
username: string
|
||||||
teams: EntityConstructor<{
|
teams: {
|
||||||
id: number
|
id: number
|
||||||
name: string
|
name: string
|
||||||
users: EntityConstructor<{
|
users: {
|
||||||
id: number
|
id: number
|
||||||
username: string
|
username: string
|
||||||
}>
|
}[]
|
||||||
}>
|
}[]
|
||||||
}>()
|
}>()
|
||||||
|
|
||||||
expectTypeOf(new Team()).toMatchTypeOf<{
|
expectTypeOf(new Team()).toMatchTypeOf<{
|
||||||
id: number
|
id: number
|
||||||
name: string
|
name: string
|
||||||
users: EntityConstructor<{
|
users: {
|
||||||
id: number
|
id: number
|
||||||
username: string
|
username: string
|
||||||
teams: EntityConstructor<{
|
teams: {
|
||||||
id: number
|
id: number
|
||||||
name: string
|
name: string
|
||||||
}>
|
}[]
|
||||||
}>
|
}[]
|
||||||
}>()
|
}>()
|
||||||
|
|
||||||
const metaData = MetadataStorage.getMetadataFromDecorator(User)
|
const metaData = MetadataStorage.getMetadataFromDecorator(User)
|
||||||
@@ -4969,39 +4972,39 @@ describe("Entity builder", () => {
|
|||||||
expectTypeOf(new User()).toMatchTypeOf<{
|
expectTypeOf(new User()).toMatchTypeOf<{
|
||||||
id: number
|
id: number
|
||||||
username: string
|
username: string
|
||||||
teams: EntityConstructor<{
|
teams: {
|
||||||
id: number
|
id: number
|
||||||
name: string
|
name: string
|
||||||
users: EntityConstructor<{
|
users: {
|
||||||
id: number
|
id: number
|
||||||
username: string
|
username: string
|
||||||
}>
|
}[]
|
||||||
}>
|
}[]
|
||||||
activeTeams: EntityConstructor<{
|
activeTeams: {
|
||||||
id: number
|
id: number
|
||||||
name: string
|
name: string
|
||||||
users: EntityConstructor<{
|
users: {
|
||||||
id: number
|
id: number
|
||||||
username: string
|
username: string
|
||||||
}>
|
}[]
|
||||||
}>
|
}[]
|
||||||
}>()
|
}>()
|
||||||
|
|
||||||
expectTypeOf(new Team()).toMatchTypeOf<{
|
expectTypeOf(new Team()).toMatchTypeOf<{
|
||||||
id: number
|
id: number
|
||||||
name: string
|
name: string
|
||||||
users: EntityConstructor<{
|
users: {
|
||||||
id: number
|
id: number
|
||||||
username: string
|
username: string
|
||||||
teams: EntityConstructor<{
|
teams: {
|
||||||
id: number
|
id: number
|
||||||
name: string
|
name: string
|
||||||
}>
|
}[]
|
||||||
activeTeams: EntityConstructor<{
|
activeTeams: {
|
||||||
id: number
|
id: number
|
||||||
name: string
|
name: string
|
||||||
}>
|
}[]
|
||||||
}>
|
}[]
|
||||||
}>()
|
}>()
|
||||||
|
|
||||||
const metaData = MetadataStorage.getMetadataFromDecorator(User)
|
const metaData = MetadataStorage.getMetadataFromDecorator(User)
|
||||||
@@ -5168,27 +5171,27 @@ describe("Entity builder", () => {
|
|||||||
expectTypeOf(new User()).toMatchTypeOf<{
|
expectTypeOf(new User()).toMatchTypeOf<{
|
||||||
id: number
|
id: number
|
||||||
username: string
|
username: string
|
||||||
teams: EntityConstructor<{
|
teams: {
|
||||||
id: number
|
id: number
|
||||||
name: string
|
name: string
|
||||||
users: EntityConstructor<{
|
users: {
|
||||||
id: number
|
id: number
|
||||||
username: string
|
username: string
|
||||||
}>
|
}[]
|
||||||
}>
|
}[]
|
||||||
}>()
|
}>()
|
||||||
|
|
||||||
expectTypeOf(new Team()).toMatchTypeOf<{
|
expectTypeOf(new Team()).toMatchTypeOf<{
|
||||||
id: number
|
id: number
|
||||||
name: string
|
name: string
|
||||||
users: EntityConstructor<{
|
users: {
|
||||||
id: number
|
id: number
|
||||||
username: string
|
username: string
|
||||||
teams: EntityConstructor<{
|
teams: {
|
||||||
id: number
|
id: number
|
||||||
name: string
|
name: string
|
||||||
}>
|
}[]
|
||||||
}>
|
}[]
|
||||||
}>()
|
}>()
|
||||||
|
|
||||||
const metaData = MetadataStorage.getMetadataFromDecorator(User)
|
const metaData = MetadataStorage.getMetadataFromDecorator(User)
|
||||||
@@ -5339,27 +5342,27 @@ describe("Entity builder", () => {
|
|||||||
expectTypeOf(new User()).toMatchTypeOf<{
|
expectTypeOf(new User()).toMatchTypeOf<{
|
||||||
id: number
|
id: number
|
||||||
username: string
|
username: string
|
||||||
teams: EntityConstructor<{
|
teams: {
|
||||||
id: number
|
id: number
|
||||||
name: string
|
name: string
|
||||||
users: EntityConstructor<{
|
users: {
|
||||||
id: number
|
id: number
|
||||||
username: string
|
username: string
|
||||||
}>
|
}[]
|
||||||
}>
|
}[]
|
||||||
}>()
|
}>()
|
||||||
|
|
||||||
expectTypeOf(new Team()).toMatchTypeOf<{
|
expectTypeOf(new Team()).toMatchTypeOf<{
|
||||||
id: number
|
id: number
|
||||||
name: string
|
name: string
|
||||||
users: EntityConstructor<{
|
users: {
|
||||||
id: number
|
id: number
|
||||||
username: string
|
username: string
|
||||||
teams: EntityConstructor<{
|
teams: {
|
||||||
id: number
|
id: number
|
||||||
name: string
|
name: string
|
||||||
}>
|
}[]
|
||||||
}>
|
}[]
|
||||||
}>()
|
}>()
|
||||||
|
|
||||||
const metaData = MetadataStorage.getMetadataFromDecorator(User)
|
const metaData = MetadataStorage.getMetadataFromDecorator(User)
|
||||||
@@ -5513,27 +5516,27 @@ describe("Entity builder", () => {
|
|||||||
expectTypeOf(new User()).toMatchTypeOf<{
|
expectTypeOf(new User()).toMatchTypeOf<{
|
||||||
id: number
|
id: number
|
||||||
username: string
|
username: string
|
||||||
teams: EntityConstructor<{
|
teams: {
|
||||||
id: number
|
id: number
|
||||||
name: string
|
name: string
|
||||||
users: EntityConstructor<{
|
users: {
|
||||||
id: number
|
id: number
|
||||||
username: string
|
username: string
|
||||||
}>
|
}[]
|
||||||
}>
|
}[]
|
||||||
}>()
|
}>()
|
||||||
|
|
||||||
expectTypeOf(new Team()).toMatchTypeOf<{
|
expectTypeOf(new Team()).toMatchTypeOf<{
|
||||||
id: number
|
id: number
|
||||||
name: string
|
name: string
|
||||||
users: EntityConstructor<{
|
users: {
|
||||||
id: number
|
id: number
|
||||||
username: string
|
username: string
|
||||||
teams: EntityConstructor<{
|
teams: {
|
||||||
id: number
|
id: number
|
||||||
name: string
|
name: string
|
||||||
}>
|
}[]
|
||||||
}>
|
}[]
|
||||||
}>()
|
}>()
|
||||||
|
|
||||||
const squadMetaData = MetadataStorage.getMetadataFromDecorator(Squad)
|
const squadMetaData = MetadataStorage.getMetadataFromDecorator(Squad)
|
||||||
|
|||||||
@@ -85,16 +85,14 @@ export function createMikrORMEntity() {
|
|||||||
* return the input idempotently
|
* return the input idempotently
|
||||||
* @param entity
|
* @param entity
|
||||||
*/
|
*/
|
||||||
export const toMikroORMEntity = <T>(
|
export const toMikroORMEntity = <T>(entity: T): Infer<T> => {
|
||||||
entity: T
|
|
||||||
): T extends DmlEntity<any> ? Infer<T> : T => {
|
|
||||||
let mikroOrmEntity: T | EntityConstructor<any> = entity
|
let mikroOrmEntity: T | EntityConstructor<any> = entity
|
||||||
|
|
||||||
if (DmlEntity.isDmlEntity(entity)) {
|
if (DmlEntity.isDmlEntity(entity)) {
|
||||||
mikroOrmEntity = createMikrORMEntity()(entity)
|
mikroOrmEntity = createMikrORMEntity()(entity)
|
||||||
}
|
}
|
||||||
|
|
||||||
return mikroOrmEntity as T extends DmlEntity<any> ? Infer<T> : T
|
return mikroOrmEntity as Infer<T>
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@@ -16,7 +16,7 @@ export class NullableModifier<T, Relation extends RelationshipType<T>>
|
|||||||
return !!modifier?.[IsNullableModifier]
|
return !!modifier?.[IsNullableModifier]
|
||||||
}
|
}
|
||||||
|
|
||||||
declare type: RelationshipType<T>["type"]
|
declare type: Relation["type"]
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* A type-only property to infer the JavScript data-type
|
* A type-only property to infer the JavScript data-type
|
||||||
|
|||||||
Reference in new issue
Block a user