mirror of
https://github.com/typeorm/typeorm.git
synced 2025-12-08 21:26:23 +00:00
added internal annotation to all internal modules and added exports in the entry point with exports of all major modules
This commit is contained in:
parent
db7cb6f2e8
commit
31f0c0b2e8
22
README.md
22
README.md
@ -56,8 +56,8 @@ Lets create a sample application - a photo album.
|
||||
First we create a new file `Photo.ts` and put a class there:
|
||||
|
||||
```typescript
|
||||
import {Table} from "typeorm/decorator/tables";
|
||||
import {PrimaryColumn, Column} from "typeorm/decorator/columns";
|
||||
import {Table} from "typeorm/tables";
|
||||
import {PrimaryColumn, Column} from "typeorm/columns";
|
||||
|
||||
@Table("photo")
|
||||
export class Photo {
|
||||
@ -217,9 +217,9 @@ class called `PhotoMetadata.ts` which will contain a `PhotoMetadata` class
|
||||
which supposed to be contain our Photo's additional meta-information:
|
||||
|
||||
```typescript
|
||||
import {Table} from "typeorm/decorator/tables";
|
||||
import {PrimaryColumn, Column} from "typeorm/decorator/columns";
|
||||
import {OneToOne} from "typeorm/decorator/relations";
|
||||
import {Table} from "typeorm/tables";
|
||||
import {PrimaryColumn, Column} from "typeorm/columns";
|
||||
import {OneToOne} from "typeorm/relations";
|
||||
|
||||
@Table("photo_metadata")
|
||||
export class PhotoMetadata {
|
||||
@ -419,9 +419,9 @@ one author, and each author can have many photos. First, lets create a
|
||||
`Author` class:
|
||||
|
||||
```typescript
|
||||
import {Table} from "typeorm/decorator/tables";
|
||||
import {PrimaryColumn, Column} from "typeorm/decorator/columns";
|
||||
import {OneToMany} from "typeorm/decorator/relations";
|
||||
import {Table} from "typeorm/tables";
|
||||
import {PrimaryColumn, Column} from "typeorm/columns";
|
||||
import {OneToMany} from "typeorm/relations";
|
||||
|
||||
@Table("author")
|
||||
export class Author {
|
||||
@ -528,9 +528,9 @@ be in many albums, and multiple can have many photos. Lets create an
|
||||
`Album` class:
|
||||
|
||||
```typescript
|
||||
import {Table} from "typeorm/decorator/tables";
|
||||
import {PrimaryColumn, Column} from "typeorm/decorator/columns";
|
||||
import {ManyToMany} from "typeorm/decorator/relations";
|
||||
import {Table} from "typeorm/tables";
|
||||
import {PrimaryColumn, Column} from "typeorm/columns";
|
||||
import {ManyToMany} from "typeorm/relations";
|
||||
|
||||
@Table("album")
|
||||
export class Album {
|
||||
|
||||
@ -10,7 +10,7 @@ You can listen to events in the ORM. There two concepts you can use:
|
||||
First you need to create a new subscriber class and implement `EventSubscriberInterface` interface:
|
||||
|
||||
```typescript
|
||||
import {EventSubscriber, UpdateEvent, RemoveEvent, InsertEvent} from "typeorm/decorator/listeners"
|
||||
import {EventSubscriber, UpdateEvent, RemoveEvent, InsertEvent} from "typeorm/listeners"
|
||||
import {EventSubscriberInterface} from "typeorm/subscriber/EventSubscriberInterface";
|
||||
|
||||
@EventSubscriber()
|
||||
@ -79,7 +79,7 @@ connectionManager.importSubscribers([MySubscriber]);
|
||||
You can also use listeners in your entities. Such listeners can be convenient for a trivial operations.
|
||||
|
||||
```typescript
|
||||
import {Table} from "typeorm/decorator/tables";
|
||||
import {Table} from "typeorm/tables";
|
||||
import {AfterLoad} from "typeorm/decorator/listeners/AfterLoad";
|
||||
import {AfterInsert} from "typeorm/decorator/listeners/AfterInsert";
|
||||
import {BeforeInsert} from "typeorm/decorator/listeners/BeforeInsert";
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
import {PrimaryColumn, Column} from "../../../src/decorator/columns";
|
||||
import {Table} from "../../../src/decorator/tables";
|
||||
import {PrimaryColumn, Column} from "../../../src/columns";
|
||||
import {Table} from "../../../src/tables";
|
||||
|
||||
@Table("sample1_post")
|
||||
export class Post {
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
import {PrimaryColumn, Column} from "../../../src/decorator/columns";
|
||||
import {Table} from "../../../src/decorator/tables";
|
||||
import {ManyToOne, ManyToManyInverse} from "../../../src/decorator/relations";
|
||||
import {PrimaryColumn, Column} from "../../../src/columns";
|
||||
import {Table} from "../../../src/tables";
|
||||
import {ManyToOne, ManyToManyInverse} from "../../../src/relations";
|
||||
import {Post} from "./Post";
|
||||
import {PostDetails} from "./PostDetails";
|
||||
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
import {PrimaryColumn, Column} from "../../../src/decorator/columns";
|
||||
import {Table} from "../../../src/decorator/tables";
|
||||
import {OneToMany} from "../../../src/decorator/relations";
|
||||
import {PrimaryColumn, Column} from "../../../src/columns";
|
||||
import {Table} from "../../../src/tables";
|
||||
import {OneToMany} from "../../../src/relations";
|
||||
import {PostDetails} from "./PostDetails";
|
||||
|
||||
@Table("sample10_chapter")
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
import {PrimaryColumn, Column} from "../../../src/decorator/columns";
|
||||
import {Table} from "../../../src/decorator/tables";
|
||||
import {OneToMany} from "../../../src/decorator/relations";
|
||||
import {PrimaryColumn, Column} from "../../../src/columns";
|
||||
import {Table} from "../../../src/tables";
|
||||
import {OneToMany} from "../../../src/relations";
|
||||
import {Post} from "./Post";
|
||||
|
||||
@Table("sample10_cover")
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
import {PrimaryColumn, Column} from "../../../src/decorator/columns";
|
||||
import {Table} from "../../../src/decorator/tables";
|
||||
import {ManyToOne, OneToOne} from "../../../src/decorator/relations";
|
||||
import {PrimaryColumn, Column} from "../../../src/columns";
|
||||
import {Table} from "../../../src/tables";
|
||||
import {ManyToOne, OneToOne} from "../../../src/relations";
|
||||
import {Post} from "./Post";
|
||||
import {ImageDetails} from "./ImageDetails";
|
||||
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
import {PrimaryColumn, Column} from "../../../src/decorator/columns";
|
||||
import {Table} from "../../../src/decorator/tables";
|
||||
import {OneToOneInverse} from "../../../src/decorator/relations";
|
||||
import {PrimaryColumn, Column} from "../../../src/columns";
|
||||
import {Table} from "../../../src/tables";
|
||||
import {OneToOneInverse} from "../../../src/relations";
|
||||
import {Image} from "./Image";
|
||||
|
||||
@Table("sample10_image_details")
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
import {PrimaryColumn, Column} from "../../../src/decorator/columns";
|
||||
import {Table} from "../../../src/decorator/tables";
|
||||
import {OneToMany, ManyToOne, ManyToMany, OneToOne} from "../../../src/decorator/relations";
|
||||
import {PrimaryColumn, Column} from "../../../src/columns";
|
||||
import {Table} from "../../../src/tables";
|
||||
import {OneToMany, ManyToOne, ManyToMany, OneToOne} from "../../../src/relations";
|
||||
import {Image} from "./Image";
|
||||
import {Cover} from "./Cover";
|
||||
import {Category} from "./Category";
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
import {PrimaryColumn, Column} from "../../../src/decorator/columns";
|
||||
import {Table} from "../../../src/decorator/tables";
|
||||
import {OneToOne, OneToMany, ManyToOne} from "../../../src/decorator/relations";
|
||||
import {PrimaryColumn, Column} from "../../../src/columns";
|
||||
import {Table} from "../../../src/tables";
|
||||
import {OneToOne, OneToMany, ManyToOne} from "../../../src/relations";
|
||||
import {Post} from "./Post";
|
||||
import {Chapter} from "./Chapter";
|
||||
import {Category} from "./Category";
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
import {PrimaryColumn, Column} from "../../../src/decorator/columns";
|
||||
import {Table} from "../../../src/decorator/tables";
|
||||
import {PrimaryColumn, Column} from "../../../src/columns";
|
||||
import {Table} from "../../../src/tables";
|
||||
import {CreateDateColumn} from "../../../src/decorator/columns/CreateDateColumn";
|
||||
import {UpdateDateColumn} from "../../../src/decorator/columns/UpdateDateColumn";
|
||||
|
||||
|
||||
@ -1,7 +1,7 @@
|
||||
import {PrimaryColumn, Column} from "../../../src/decorator/columns";
|
||||
import {Table} from "../../../src/decorator/tables";
|
||||
import {PrimaryColumn, Column} from "../../../src/columns";
|
||||
import {Table} from "../../../src/tables";
|
||||
import {PostDetails} from "./PostDetails";
|
||||
import {OneToOne} from "../../../src/decorator/relations";
|
||||
import {OneToOne} from "../../../src/relations";
|
||||
import {PostCategory} from "./PostCategory";
|
||||
import {PostAuthor} from "./PostAuthor";
|
||||
import {PostInformation} from "./PostInformation";
|
||||
|
||||
@ -1,7 +1,7 @@
|
||||
import {PrimaryColumn, Column} from "../../../src/decorator/columns";
|
||||
import {Table} from "../../../src/decorator/tables";
|
||||
import {PrimaryColumn, Column} from "../../../src/columns";
|
||||
import {Table} from "../../../src/tables";
|
||||
import {Post} from "./Post";
|
||||
import {OneToOneInverse} from "../../../src/decorator/relations";
|
||||
import {OneToOneInverse} from "../../../src/relations";
|
||||
|
||||
@Table("sample2_post_author")
|
||||
export class PostAuthor {
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
import {PrimaryColumn, Column} from "../../../src/decorator/columns";
|
||||
import {Table} from "../../../src/decorator/tables";
|
||||
import {PrimaryColumn, Column} from "../../../src/columns";
|
||||
import {Table} from "../../../src/tables";
|
||||
|
||||
@Table("sample2_post_category")
|
||||
export class PostCategory {
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
import {PrimaryColumn, Column} from "../../../src/decorator/columns";
|
||||
import {Table} from "../../../src/decorator/tables";
|
||||
import {OneToOneInverse} from "../../../src/decorator/relations";
|
||||
import {PrimaryColumn, Column} from "../../../src/columns";
|
||||
import {Table} from "../../../src/tables";
|
||||
import {OneToOneInverse} from "../../../src/relations";
|
||||
import {Post} from "./Post";
|
||||
|
||||
@Table("sample2_post_details")
|
||||
|
||||
@ -1,7 +1,7 @@
|
||||
import {PrimaryColumn, Column} from "../../../src/decorator/columns";
|
||||
import {Table} from "../../../src/decorator/tables";
|
||||
import {PrimaryColumn, Column} from "../../../src/columns";
|
||||
import {Table} from "../../../src/tables";
|
||||
import {Post} from "./Post";
|
||||
import {OneToOneInverse} from "../../../src/decorator/relations";
|
||||
import {OneToOneInverse} from "../../../src/relations";
|
||||
|
||||
@Table("sample2_post_image")
|
||||
export class PostImage {
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
import {PrimaryColumn, Column} from "../../../src/decorator/columns";
|
||||
import {Table} from "../../../src/decorator/tables";
|
||||
import {OneToOneInverse} from "../../../src/decorator/relations";
|
||||
import {PrimaryColumn, Column} from "../../../src/columns";
|
||||
import {Table} from "../../../src/tables";
|
||||
import {OneToOneInverse} from "../../../src/relations";
|
||||
import {Post} from "./Post";
|
||||
|
||||
@Table("sample2_post_information")
|
||||
|
||||
@ -1,7 +1,7 @@
|
||||
import {PrimaryColumn, Column} from "../../../src/decorator/columns";
|
||||
import {Table} from "../../../src/decorator/tables";
|
||||
import {PrimaryColumn, Column} from "../../../src/columns";
|
||||
import {Table} from "../../../src/tables";
|
||||
import {Post} from "./Post";
|
||||
import {OneToOneInverse} from "../../../src/decorator/relations";
|
||||
import {OneToOneInverse} from "../../../src/relations";
|
||||
|
||||
@Table("sample2_post_metadata")
|
||||
export class PostMetadata {
|
||||
|
||||
@ -1,7 +1,7 @@
|
||||
import {PrimaryColumn, Column} from "../../../src/decorator/columns";
|
||||
import {Table} from "../../../src/decorator/tables";
|
||||
import {PrimaryColumn, Column} from "../../../src/columns";
|
||||
import {Table} from "../../../src/tables";
|
||||
import {PostDetails} from "./PostDetails";
|
||||
import {ManyToOne} from "../../../src/decorator/relations";
|
||||
import {ManyToOne} from "../../../src/relations";
|
||||
import {PostCategory} from "./PostCategory";
|
||||
import {PostAuthor} from "./PostAuthor";
|
||||
import {PostInformation} from "./PostInformation";
|
||||
|
||||
@ -1,7 +1,7 @@
|
||||
import {PrimaryColumn, Column} from "../../../src/decorator/columns";
|
||||
import {Table} from "../../../src/decorator/tables";
|
||||
import {PrimaryColumn, Column} from "../../../src/columns";
|
||||
import {Table} from "../../../src/tables";
|
||||
import {Post} from "./Post";
|
||||
import {OneToMany} from "../../../src/decorator/relations";
|
||||
import {OneToMany} from "../../../src/relations";
|
||||
|
||||
@Table("sample3_post_author")
|
||||
export class PostAuthor {
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
import {PrimaryColumn, Column} from "../../../src/decorator/columns";
|
||||
import {Table} from "../../../src/decorator/tables";
|
||||
import {PrimaryColumn, Column} from "../../../src/columns";
|
||||
import {Table} from "../../../src/tables";
|
||||
|
||||
@Table("sample3_post_category")
|
||||
export class PostCategory {
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
import {PrimaryColumn, Column} from "../../../src/decorator/columns";
|
||||
import {Table} from "../../../src/decorator/tables";
|
||||
import {OneToMany} from "../../../src/decorator/relations";
|
||||
import {PrimaryColumn, Column} from "../../../src/columns";
|
||||
import {Table} from "../../../src/tables";
|
||||
import {OneToMany} from "../../../src/relations";
|
||||
import {Post} from "./Post";
|
||||
|
||||
@Table("sample3_post_details")
|
||||
|
||||
@ -1,7 +1,7 @@
|
||||
import {PrimaryColumn, Column} from "../../../src/decorator/columns";
|
||||
import {Table} from "../../../src/decorator/tables";
|
||||
import {PrimaryColumn, Column} from "../../../src/columns";
|
||||
import {Table} from "../../../src/tables";
|
||||
import {Post} from "./Post";
|
||||
import {OneToMany} from "../../../src/decorator/relations";
|
||||
import {OneToMany} from "../../../src/relations";
|
||||
|
||||
@Table("sample3_post_image")
|
||||
export class PostImage {
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
import {PrimaryColumn, Column} from "../../../src/decorator/columns";
|
||||
import {Table} from "../../../src/decorator/tables";
|
||||
import {OneToMany} from "../../../src/decorator/relations";
|
||||
import {PrimaryColumn, Column} from "../../../src/columns";
|
||||
import {Table} from "../../../src/tables";
|
||||
import {OneToMany} from "../../../src/relations";
|
||||
import {Post} from "./Post";
|
||||
|
||||
@Table("sample3_post_information")
|
||||
|
||||
@ -1,7 +1,7 @@
|
||||
import {PrimaryColumn, Column} from "../../../src/decorator/columns";
|
||||
import {Table} from "../../../src/decorator/tables";
|
||||
import {PrimaryColumn, Column} from "../../../src/columns";
|
||||
import {Table} from "../../../src/tables";
|
||||
import {Post} from "./Post";
|
||||
import {OneToMany} from "../../../src/decorator/relations";
|
||||
import {OneToMany} from "../../../src/relations";
|
||||
|
||||
@Table("sample3_post_metadata")
|
||||
export class PostMetadata {
|
||||
|
||||
@ -1,7 +1,7 @@
|
||||
import {PrimaryColumn, Column} from "../../../src/decorator/columns";
|
||||
import {Table} from "../../../src/decorator/tables";
|
||||
import {PrimaryColumn, Column} from "../../../src/columns";
|
||||
import {Table} from "../../../src/tables";
|
||||
import {PostDetails} from "./PostDetails";
|
||||
import {ManyToMany} from "../../../src/decorator/relations";
|
||||
import {ManyToMany} from "../../../src/relations";
|
||||
import {PostCategory} from "./PostCategory";
|
||||
import {PostAuthor} from "./PostAuthor";
|
||||
import {PostInformation} from "./PostInformation";
|
||||
|
||||
@ -1,7 +1,7 @@
|
||||
import {PrimaryColumn, Column} from "../../../src/decorator/columns";
|
||||
import {Table} from "../../../src/decorator/tables";
|
||||
import {PrimaryColumn, Column} from "../../../src/columns";
|
||||
import {Table} from "../../../src/tables";
|
||||
import {Post} from "./Post";
|
||||
import {ManyToManyInverse} from "../../../src/decorator/relations";
|
||||
import {ManyToManyInverse} from "../../../src/relations";
|
||||
|
||||
@Table("sample4_post_author")
|
||||
export class PostAuthor {
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
import {PrimaryColumn, Column} from "../../../src/decorator/columns";
|
||||
import {Table} from "../../../src/decorator/tables";
|
||||
import {PrimaryColumn, Column} from "../../../src/columns";
|
||||
import {Table} from "../../../src/tables";
|
||||
|
||||
@Table("sample4_post_category")
|
||||
export class PostCategory {
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
import {PrimaryColumn, Column} from "../../../src/decorator/columns";
|
||||
import {Table} from "../../../src/decorator/tables";
|
||||
import {ManyToManyInverse} from "../../../src/decorator/relations";
|
||||
import {PrimaryColumn, Column} from "../../../src/columns";
|
||||
import {Table} from "../../../src/tables";
|
||||
import {ManyToManyInverse} from "../../../src/relations";
|
||||
import {Post} from "./Post";
|
||||
|
||||
@Table("sample4_post_details")
|
||||
|
||||
@ -1,7 +1,7 @@
|
||||
import {PrimaryColumn, Column} from "../../../src/decorator/columns";
|
||||
import {Table} from "../../../src/decorator/tables";
|
||||
import {PrimaryColumn, Column} from "../../../src/columns";
|
||||
import {Table} from "../../../src/tables";
|
||||
import {Post} from "./Post";
|
||||
import {ManyToManyInverse} from "../../../src/decorator/relations";
|
||||
import {ManyToManyInverse} from "../../../src/relations";
|
||||
|
||||
@Table("sample4_post_image")
|
||||
export class PostImage {
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
import {PrimaryColumn, Column} from "../../../src/decorator/columns";
|
||||
import {Table} from "../../../src/decorator/tables";
|
||||
import {ManyToManyInverse} from "../../../src/decorator/relations";
|
||||
import {PrimaryColumn, Column} from "../../../src/columns";
|
||||
import {Table} from "../../../src/tables";
|
||||
import {ManyToManyInverse} from "../../../src/relations";
|
||||
import {Post} from "./Post";
|
||||
|
||||
@Table("sample4_post_information")
|
||||
|
||||
@ -1,7 +1,7 @@
|
||||
import {PrimaryColumn, Column} from "../../../src/decorator/columns";
|
||||
import {Table} from "../../../src/decorator/tables";
|
||||
import {PrimaryColumn, Column} from "../../../src/columns";
|
||||
import {Table} from "../../../src/tables";
|
||||
import {Post} from "./Post";
|
||||
import {ManyToManyInverse} from "../../../src/decorator/relations";
|
||||
import {ManyToManyInverse} from "../../../src/relations";
|
||||
|
||||
@Table("sample4_post_metadata")
|
||||
export class PostMetadata {
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
import {PrimaryColumn, Column} from "../../../src/decorator/columns";
|
||||
import {Table} from "../../../src/decorator/tables";
|
||||
import {ManyToMany} from "../../../src/decorator/relations";
|
||||
import {PrimaryColumn, Column} from "../../../src/columns";
|
||||
import {Table} from "../../../src/tables";
|
||||
import {ManyToMany} from "../../../src/relations";
|
||||
import {PostCategory} from "./PostCategory";
|
||||
import {PostAuthor} from "./PostAuthor";
|
||||
import {OneToMany} from "../../../src/decorator/relations/OneToMany";
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
import {PrimaryColumn, Column} from "../../../src/decorator/columns";
|
||||
import {Table} from "../../../src/decorator/tables";
|
||||
import {PrimaryColumn, Column} from "../../../src/columns";
|
||||
import {Table} from "../../../src/tables";
|
||||
import {Post} from "./Post";
|
||||
import {OneToMany} from "../../../src/decorator/relations/OneToMany";
|
||||
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
import {PrimaryColumn, Column} from "../../../src/decorator/columns";
|
||||
import {Table} from "../../../src/decorator/tables";
|
||||
import {PrimaryColumn, Column} from "../../../src/columns";
|
||||
import {Table} from "../../../src/tables";
|
||||
import {Post} from "./Post";
|
||||
import {ManyToManyInverse} from "../../../src/decorator/relations/ManyToManyInverse";
|
||||
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
import {PrimaryColumn, Column} from "../../../src/decorator/columns";
|
||||
import {Table} from "../../../src/decorator/tables";
|
||||
import {ManyToMany} from "../../../src/decorator/relations";
|
||||
import {PrimaryColumn, Column} from "../../../src/columns";
|
||||
import {Table} from "../../../src/tables";
|
||||
import {ManyToMany} from "../../../src/relations";
|
||||
import {PostCategory} from "./PostCategory";
|
||||
import {PostAuthor} from "./PostAuthor";
|
||||
import {ManyToOne} from "../../../src/decorator/relations/ManyToOne";
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
import {Column} from "../../../src/decorator/columns";
|
||||
import {Table} from "../../../src/decorator/tables";
|
||||
import {Column} from "../../../src/columns";
|
||||
import {Table} from "../../../src/tables";
|
||||
import {BasePost} from "./BasePost";
|
||||
import {ManyToOne} from "../../../src/decorator/relations/ManyToOne";
|
||||
import {PostAuthor} from "./PostAuthor";
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
import {Column} from "../../../src/decorator/columns";
|
||||
import {Table} from "../../../src/decorator/tables";
|
||||
import {Column} from "../../../src/columns";
|
||||
import {Table} from "../../../src/tables";
|
||||
import {BasePost} from "./BasePost";
|
||||
import {PostCategory} from "./PostCategory";
|
||||
import {ManyToMany} from "../../../src/decorator/relations/ManyToMany";
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
import {PrimaryColumn, Column} from "../../../src/decorator/columns";
|
||||
import {Table} from "../../../src/decorator/tables";
|
||||
import {PrimaryColumn, Column} from "../../../src/columns";
|
||||
import {Table} from "../../../src/tables";
|
||||
import {Post} from "./Post";
|
||||
import {OneToMany} from "../../../src/decorator/relations/OneToMany";
|
||||
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
import {PrimaryColumn, Column} from "../../../src/decorator/columns";
|
||||
import {Table} from "../../../src/decorator/tables";
|
||||
import {PrimaryColumn, Column} from "../../../src/columns";
|
||||
import {Table} from "../../../src/tables";
|
||||
import {Post} from "./Post";
|
||||
import {ManyToManyInverse} from "../../../src/decorator/relations/ManyToManyInverse";
|
||||
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
import {PrimaryColumn, Column} from "../../../src/decorator/columns";
|
||||
import {Table} from "../../../src/decorator/tables";
|
||||
import {ManyToMany} from "../../../src/decorator/relations";
|
||||
import {PrimaryColumn, Column} from "../../../src/columns";
|
||||
import {Table} from "../../../src/tables";
|
||||
import {ManyToMany} from "../../../src/relations";
|
||||
import {PostCategory} from "./PostCategory";
|
||||
import {PostAuthor} from "./PostAuthor";
|
||||
import {ManyToOne} from "../../../src/decorator/relations/ManyToOne";
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
import {PrimaryColumn, Column} from "../../../src/decorator/columns";
|
||||
import {Table} from "../../../src/decorator/tables";
|
||||
import {PrimaryColumn, Column} from "../../../src/columns";
|
||||
import {Table} from "../../../src/tables";
|
||||
import {Post} from "./Post";
|
||||
import {OneToMany} from "../../../src/decorator/relations/OneToMany";
|
||||
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
import {PrimaryColumn, Column} from "../../../src/decorator/columns";
|
||||
import {Table} from "../../../src/decorator/tables";
|
||||
import {PrimaryColumn, Column} from "../../../src/columns";
|
||||
import {Table} from "../../../src/tables";
|
||||
import {Post} from "./Post";
|
||||
import {ManyToManyInverse} from "../../../src/decorator/relations/ManyToManyInverse";
|
||||
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
import {PrimaryColumn, Column} from "../../../src/decorator/columns";
|
||||
import {Table} from "../../../src/decorator/tables";
|
||||
import {ManyToMany} from "../../../src/decorator/relations";
|
||||
import {PrimaryColumn, Column} from "../../../src/columns";
|
||||
import {Table} from "../../../src/tables";
|
||||
import {ManyToMany} from "../../../src/relations";
|
||||
import {ManyToOne} from "../../../src/decorator/relations/ManyToOne";
|
||||
import {OneToMany} from "../../../src/decorator/relations/OneToMany";
|
||||
import {ManyToManyInverse} from "../../../src/decorator/relations/ManyToManyInverse";
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
import {PrimaryColumn, Column} from "../../../src/decorator/columns";
|
||||
import {Table} from "../../../src/decorator/tables";
|
||||
import {ManyToMany} from "../../../src/decorator/relations";
|
||||
import {PrimaryColumn, Column} from "../../../src/columns";
|
||||
import {Table} from "../../../src/tables";
|
||||
import {ManyToMany} from "../../../src/relations";
|
||||
import {PostCategory} from "./PostCategory";
|
||||
import {PostAuthor} from "./PostAuthor";
|
||||
import {ManyToOne} from "../../../src/decorator/relations/ManyToOne";
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
import {PrimaryColumn, Column} from "../../../src/decorator/columns";
|
||||
import {Table} from "../../../src/decorator/tables";
|
||||
import {PrimaryColumn, Column} from "../../../src/columns";
|
||||
import {Table} from "../../../src/tables";
|
||||
import {Post} from "./Post";
|
||||
import {OneToMany} from "../../../src/decorator/relations/OneToMany";
|
||||
import {AfterRemove} from "../../../src/decorator/listeners/AfterRemove";
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
import {PrimaryColumn, Column} from "../../../src/decorator/columns";
|
||||
import {Table} from "../../../src/decorator/tables";
|
||||
import {PrimaryColumn, Column} from "../../../src/columns";
|
||||
import {Table} from "../../../src/tables";
|
||||
import {Post} from "./Post";
|
||||
import {ManyToManyInverse} from "../../../src/decorator/relations/ManyToManyInverse";
|
||||
import {AfterRemove} from "../../../src/decorator/listeners/AfterRemove";
|
||||
|
||||
4
src/columns.ts
Normal file
4
src/columns.ts
Normal file
@ -0,0 +1,4 @@
|
||||
export * from "./decorator/columns/Column";
|
||||
export * from "./decorator/columns/PrimaryColumn";
|
||||
export * from "./decorator/columns/CreateDateColumn";
|
||||
export * from "./decorator/columns/UpdateDateColumn";
|
||||
@ -4,6 +4,8 @@ import {ConnectionOptions} from "./ConnectionOptions";
|
||||
|
||||
/**
|
||||
* Array for the connections.
|
||||
*
|
||||
* @internal
|
||||
*/
|
||||
export class ConnectionArray extends Array<Connection> {
|
||||
|
||||
|
||||
@ -1,3 +1,6 @@
|
||||
/**
|
||||
* @internal
|
||||
*/
|
||||
export class BroadcasterNotFoundError extends Error {
|
||||
name = "BroadcasterNotFoundError";
|
||||
|
||||
|
||||
@ -1,3 +1,6 @@
|
||||
/**
|
||||
* @internal
|
||||
*/
|
||||
export class CannotSetNamingStrategyError extends Error {
|
||||
name = "CannotSetNamingStrategyError";
|
||||
message = "Cannot set naming strategy. Naming strategy must be set right after ConnectionManager is created, and before any entity importing is done.";
|
||||
|
||||
@ -1,3 +1,6 @@
|
||||
/**
|
||||
* @internal
|
||||
*/
|
||||
export class ConnectionNotFoundError extends Error {
|
||||
name = "ConnectionNotFoundError";
|
||||
|
||||
|
||||
@ -1,3 +1,6 @@
|
||||
/**
|
||||
* @internal
|
||||
*/
|
||||
export class MetadataNotFoundError extends Error {
|
||||
name = "MetadataNotFoundError";
|
||||
|
||||
|
||||
@ -1,3 +1,6 @@
|
||||
/**
|
||||
* @internal
|
||||
*/
|
||||
export class RepositoryNotFoundError extends Error {
|
||||
name = "RepositoryNotFoundError";
|
||||
|
||||
|
||||
@ -1,3 +1,6 @@
|
||||
/**
|
||||
* @internal
|
||||
*/
|
||||
export class SchemaNotFoundError extends Error {
|
||||
name = "SchemaNotFoundError";
|
||||
|
||||
|
||||
@ -1,4 +0,0 @@
|
||||
export * from "./columns/Column";
|
||||
export * from "./columns/PrimaryColumn";
|
||||
export * from "./columns/CreateDateColumn";
|
||||
export * from "./columns/UpdateDateColumn";
|
||||
@ -1,2 +0,0 @@
|
||||
export * from "./indices/Index";
|
||||
export * from "./indices/CompoundIndex";
|
||||
@ -1,7 +0,0 @@
|
||||
export * from "./listeners/EventSubscriber";
|
||||
export * from "./listeners/AfterInsert";
|
||||
export * from "./listeners/BeforeInsert";
|
||||
export * from "./listeners/AfterUpdate";
|
||||
export * from "./listeners/BeforeUpdate";
|
||||
export * from "./listeners/AfterRemove";
|
||||
export * from "./listeners/BeforeRemove";
|
||||
@ -1,6 +0,0 @@
|
||||
export * from "./relations/OneToOne";
|
||||
export * from "./relations/OneToMany";
|
||||
export * from "./relations/ManyToOne";
|
||||
export * from "./relations/ManyToMany";
|
||||
export * from "./relations/ManyToManyInverse";
|
||||
export * from "./relations/OneToOneInverse";
|
||||
@ -1,2 +0,0 @@
|
||||
export * from "./tables/Table";
|
||||
export * from "./tables/AbstractTable";
|
||||
@ -2,6 +2,7 @@ import {Connection} from "../connection/Connection";
|
||||
|
||||
/**
|
||||
* Provides base functionality for all driver implementations.
|
||||
* @internal
|
||||
*/
|
||||
export abstract class BaseDriver {
|
||||
|
||||
|
||||
@ -1,4 +1,3 @@
|
||||
import {ConnectionOptions} from "../connection/ConnectionOptions";
|
||||
import {SchemaBuilder} from "../schema-builder/SchemaBuilder";
|
||||
import {QueryBuilder} from "../query-builder/QueryBuilder";
|
||||
import {Connection} from "../connection/Connection";
|
||||
@ -12,12 +11,12 @@ export interface Driver {
|
||||
/**
|
||||
* Access to the native implementation of the database.
|
||||
*/
|
||||
native: any;
|
||||
readonly native: any;
|
||||
|
||||
/**
|
||||
* Access to the connection of the native interface of the database.
|
||||
*/
|
||||
nativeConnection: any;
|
||||
readonly nativeConnection: any;
|
||||
|
||||
/**
|
||||
* Connection used in this driver.
|
||||
@ -27,7 +26,7 @@ export interface Driver {
|
||||
/**
|
||||
* Database name to which this connection is made.
|
||||
*/
|
||||
db: string;
|
||||
readonly db: string;
|
||||
|
||||
/**
|
||||
* Creates a query builder which can be used to build an sql queries.
|
||||
|
||||
@ -1,3 +1,6 @@
|
||||
/**
|
||||
* @internal
|
||||
*/
|
||||
export class ConnectionIsNotSetError extends Error {
|
||||
name = "ConnectionIsNotSetError";
|
||||
|
||||
|
||||
2
src/indices.ts
Normal file
2
src/indices.ts
Normal file
@ -0,0 +1,2 @@
|
||||
export * from "./decorator/indices/Index";
|
||||
export * from "./decorator/indices/CompoundIndex";
|
||||
7
src/listeners.ts
Normal file
7
src/listeners.ts
Normal file
@ -0,0 +1,7 @@
|
||||
export * from "./decorator/listeners/EventSubscriber";
|
||||
export * from "./decorator/listeners/AfterInsert";
|
||||
export * from "./decorator/listeners/BeforeInsert";
|
||||
export * from "./decorator/listeners/AfterUpdate";
|
||||
export * from "./decorator/listeners/BeforeUpdate";
|
||||
export * from "./decorator/listeners/AfterRemove";
|
||||
export * from "./decorator/listeners/BeforeRemove";
|
||||
@ -10,6 +10,8 @@ import {JunctionTableMetadata} from "./metadata/JunctionTableMetadata";
|
||||
|
||||
/**
|
||||
* Aggregates all metadata: table, column, relation into one collection grouped by tables for a given set of classes.
|
||||
*
|
||||
* @internal
|
||||
*/
|
||||
export class EntityMetadataBuilder {
|
||||
|
||||
|
||||
@ -11,6 +11,8 @@ import {EntityListenerMetadata} from "./metadata/EntityListenerMetadata";
|
||||
/**
|
||||
* Storage all metadatas of all available types: tables, fields, subscribers, relations, etc.
|
||||
* Each metadata represents some specifications of what it represents.
|
||||
*
|
||||
* @internal
|
||||
*/
|
||||
export class MetadataStorage {
|
||||
|
||||
|
||||
@ -1,3 +1,6 @@
|
||||
/**
|
||||
* @internal
|
||||
*/
|
||||
export class MetadataAlreadyExistsError extends Error {
|
||||
name = "MetadataAlreadyExistsError";
|
||||
|
||||
|
||||
@ -1,3 +1,6 @@
|
||||
/**
|
||||
* @internal
|
||||
*/
|
||||
export class MetadataWithSuchNameAlreadyExistsError extends Error {
|
||||
name = "MetadataWithSuchNameAlreadyExistsError";
|
||||
|
||||
|
||||
@ -10,27 +10,28 @@ import {CascadesNotAllowedError} from "./error/CascadesNotAllowedError";
|
||||
import {RemoveOperation} from "./operation/RemoveOperation";
|
||||
|
||||
/**
|
||||
* 1. collect all exist objects from the db entity
|
||||
* 2. collect all objects from the new entity
|
||||
* 3. first need to go throw all relations of the new entity and:
|
||||
* 3.1. find all objects that are new (e.g. cascade="insert") by comparing ids from the exist objects
|
||||
* 3.2. check if relation has rights to do cascade operation and throw exception if it cannot
|
||||
* 3.3. save new objects for insert operation
|
||||
* 4. second need to go throw all relations of the db entity and:
|
||||
* 4.1. find all objects that are removed (e.g. cascade="remove") by comparing data with collected objects of the new entity
|
||||
* 4.2. check if relation has rights to do cascade operation and throw exception if it cannot
|
||||
* 4.3. save new objects for remove operation
|
||||
* 5. third need to go throw collection of all new entities
|
||||
* 5.1. compare with entities from the collection of db entities, find difference and generate a change set
|
||||
* 5.2. check if relation has rights to do cascade operation and throw exception if it cannot
|
||||
* 5.3.
|
||||
* 6. go throw all relations and find junction
|
||||
* 6.1.
|
||||
* 1. collect all exist objects from the db entity
|
||||
* 2. collect all objects from the new entity
|
||||
* 3. first need to go throw all relations of the new entity and:
|
||||
* 3.1. find all objects that are new (e.g. cascade="insert") by comparing ids from the exist objects
|
||||
* 3.2. check if relation has rights to do cascade operation and throw exception if it cannot
|
||||
* 3.3. save new objects for insert operation
|
||||
* 4. second need to go throw all relations of the db entity and:
|
||||
* 4.1. find all objects that are removed (e.g. cascade="remove") by comparing data with collected objects of the new entity
|
||||
* 4.2. check if relation has rights to do cascade operation and throw exception if it cannot
|
||||
* 4.3. save new objects for remove operation
|
||||
* 5. third need to go throw collection of all new entities
|
||||
* 5.1. compare with entities from the collection of db entities, find difference and generate a change set
|
||||
* 5.2. check if relation has rights to do cascade operation and throw exception if it cannot
|
||||
* 5.3.
|
||||
* 6. go throw all relations and find junction
|
||||
* 6.1.
|
||||
*
|
||||
* if relation has "all" then all of above:
|
||||
* if relation has "insert" it can insert a new entity
|
||||
* if relation has "update" it can only update related entity
|
||||
* if relation has "remove" it can only remove related entity
|
||||
* if relation has "all" then all of above:
|
||||
* if relation has "insert" it can insert a new entity
|
||||
* if relation has "update" it can only update related entity
|
||||
* if relation has "remove" it can only remove related entity
|
||||
* @internal
|
||||
*/
|
||||
export class EntityPersistOperationBuilder {
|
||||
|
||||
|
||||
@ -10,6 +10,7 @@ import {Broadcaster} from "../subscriber/Broadcaster";
|
||||
|
||||
/**
|
||||
* Executes PersistOperation in the given connection.
|
||||
* @internal
|
||||
*/
|
||||
export class PersistOperationExecutor {
|
||||
|
||||
|
||||
@ -1,6 +1,9 @@
|
||||
import {EntityMetadata} from "../../metadata-builder/metadata/EntityMetadata";
|
||||
import {RelationMetadata} from "../../metadata-builder/metadata/RelationMetadata";
|
||||
|
||||
/**
|
||||
* @internal
|
||||
*/
|
||||
export class CascadesNotAllowedError extends Error {
|
||||
name = "CascadesNotAllowedError";
|
||||
|
||||
|
||||
@ -1,3 +1,6 @@
|
||||
/**
|
||||
* @internal
|
||||
*/
|
||||
export class InsertOperation {
|
||||
constructor(public entity: any,
|
||||
public entityId?: number) {
|
||||
|
||||
@ -1,5 +1,8 @@
|
||||
import {EntityMetadata} from "../../metadata-builder/metadata/EntityMetadata";
|
||||
|
||||
/**
|
||||
* @internal
|
||||
*/
|
||||
export class JunctionInsertOperation {
|
||||
constructor(public metadata: EntityMetadata,
|
||||
public entity1: any,
|
||||
|
||||
@ -1,5 +1,8 @@
|
||||
import {EntityMetadata} from "../../metadata-builder/metadata/EntityMetadata";
|
||||
|
||||
/**
|
||||
* @internal
|
||||
*/
|
||||
export class JunctionRemoveOperation {
|
||||
constructor(public metadata: EntityMetadata,
|
||||
public entity1: any,
|
||||
|
||||
@ -5,11 +5,17 @@ import {JunctionInsertOperation} from "./JunctionInsertOperation";
|
||||
import {JunctionRemoveOperation} from "./JunctionRemoveOperation";
|
||||
import {UpdateByRelationOperation} from "./UpdateByRelationOperation";
|
||||
|
||||
/**
|
||||
* @internal
|
||||
*/
|
||||
export interface EntityWithId {
|
||||
id: any;
|
||||
entity: any;
|
||||
}
|
||||
|
||||
/**
|
||||
* @internal
|
||||
*/
|
||||
export class PersistOperation {
|
||||
|
||||
// todo: what if we have two same entities in the insert operations?
|
||||
|
||||
@ -1,6 +1,9 @@
|
||||
import {RelationMetadata} from "../../metadata-builder/metadata/RelationMetadata";
|
||||
import {EntityMetadata} from "../../metadata-builder/metadata/EntityMetadata";
|
||||
|
||||
/**
|
||||
* @internal
|
||||
*/
|
||||
export class RemoveOperation {
|
||||
constructor(public entity: any,
|
||||
public entityId: any,
|
||||
|
||||
@ -1,6 +1,9 @@
|
||||
import {InsertOperation} from "./InsertOperation";
|
||||
import {RelationMetadata} from "../../metadata-builder/metadata/RelationMetadata";
|
||||
|
||||
/**
|
||||
* @internal
|
||||
*/
|
||||
export class UpdateByRelationOperation {
|
||||
constructor(public targetEntity: any,
|
||||
public insertOperation: InsertOperation,
|
||||
|
||||
@ -1,5 +1,8 @@
|
||||
import {ColumnMetadata} from "../../metadata-builder/metadata/ColumnMetadata";
|
||||
|
||||
/**
|
||||
* @internal
|
||||
*/
|
||||
export class UpdateOperation {
|
||||
constructor(public entity: any,
|
||||
public entityId: any,
|
||||
|
||||
@ -4,6 +4,9 @@ import {Connection} from "../connection/Connection";
|
||||
import {RawSqlResultsToEntityTransformer} from "./transformer/RawSqlResultsToEntityTransformer";
|
||||
import {Broadcaster} from "../subscriber/Broadcaster";
|
||||
|
||||
/**
|
||||
* @internal
|
||||
*/
|
||||
export interface Join {
|
||||
alias: Alias;
|
||||
type: "left"|"inner";
|
||||
@ -18,7 +21,7 @@ export class QueryBuilder<Entity> {
|
||||
// -------------------------------------------------------------------------
|
||||
|
||||
private broadcaster: Broadcaster;
|
||||
private _aliasMap: AliasMap;
|
||||
private aliasMap: AliasMap;
|
||||
private type: "select"|"update"|"delete";
|
||||
private selects: string[] = [];
|
||||
private fromEntity: { alias: Alias };
|
||||
@ -41,7 +44,7 @@ export class QueryBuilder<Entity> {
|
||||
// -------------------------------------------------------------------------
|
||||
|
||||
constructor(private connection: Connection) {
|
||||
this._aliasMap = new AliasMap(connection.entityMetadatas);
|
||||
this.aliasMap = new AliasMap(connection.entityMetadatas);
|
||||
this.broadcaster = new Broadcaster(connection);
|
||||
}
|
||||
|
||||
@ -49,8 +52,8 @@ export class QueryBuilder<Entity> {
|
||||
// Accessors
|
||||
// -------------------------------------------------------------------------
|
||||
|
||||
get aliasMap() {
|
||||
return this._aliasMap;
|
||||
get alias(): string {
|
||||
return this.aliasMap.mainAlias.name;
|
||||
}
|
||||
|
||||
// -------------------------------------------------------------------------
|
||||
@ -64,7 +67,7 @@ export class QueryBuilder<Entity> {
|
||||
const aliasName = (<any> tableNameOrEntity).name;
|
||||
const aliasObj = new Alias(aliasName);
|
||||
aliasObj.target = <Function> tableNameOrEntity;
|
||||
this._aliasMap.addMainAlias(aliasObj);
|
||||
this.aliasMap.addMainAlias(aliasObj);
|
||||
this.fromEntity = { alias: aliasObj };
|
||||
} else if (typeof tableNameOrEntity === "string") {
|
||||
this.fromTableName = <string> tableNameOrEntity;
|
||||
@ -84,7 +87,7 @@ export class QueryBuilder<Entity> {
|
||||
const aliasName = (<any> tableNameOrEntityOrUpdateSet).name;
|
||||
const aliasObj = new Alias(aliasName);
|
||||
aliasObj.target = <Function> tableNameOrEntityOrUpdateSet;
|
||||
this._aliasMap.addMainAlias(aliasObj);
|
||||
this.aliasMap.addMainAlias(aliasObj);
|
||||
this.fromEntity = { alias: aliasObj };
|
||||
|
||||
} else if (typeof tableNameOrEntityOrUpdateSet === "string") {
|
||||
@ -129,7 +132,7 @@ export class QueryBuilder<Entity> {
|
||||
if (entityOrTableName instanceof Function) {
|
||||
const aliasObj = new Alias(alias);
|
||||
aliasObj.target = <Function> entityOrTableName;
|
||||
this._aliasMap.addMainAlias(aliasObj);
|
||||
this.aliasMap.addMainAlias(aliasObj);
|
||||
this.fromEntity = { alias: aliasObj };
|
||||
} else {
|
||||
this.fromTableName = <string> entityOrTableName;
|
||||
@ -170,7 +173,7 @@ export class QueryBuilder<Entity> {
|
||||
join(joinType: "inner"|"left", entityOrProperty: Function|string, alias: string, conditionType: "on"|"with" = "on", condition: string = ""): this {
|
||||
|
||||
const aliasObj = new Alias(alias);
|
||||
this._aliasMap.addAlias(aliasObj);
|
||||
this.aliasMap.addAlias(aliasObj);
|
||||
if (entityOrProperty instanceof Function) {
|
||||
aliasObj.target = entityOrProperty;
|
||||
|
||||
@ -434,7 +437,7 @@ export class QueryBuilder<Entity> {
|
||||
// -------------------------------------------------------------------------
|
||||
|
||||
protected rawResultsToEntities(results: any[]) {
|
||||
const transformer = new RawSqlResultsToEntityTransformer(this.connection, this._aliasMap);
|
||||
const transformer = new RawSqlResultsToEntityTransformer(this.connection, this.aliasMap);
|
||||
return transformer.transform(results);
|
||||
}
|
||||
|
||||
@ -445,7 +448,7 @@ export class QueryBuilder<Entity> {
|
||||
const allSelects: string[] = [];
|
||||
|
||||
if (this.fromEntity) {
|
||||
const metadata = this._aliasMap.getEntityMetadataByAlias(this.fromEntity.alias);
|
||||
const metadata = this.aliasMap.getEntityMetadataByAlias(this.fromEntity.alias);
|
||||
tableName = metadata.table.name;
|
||||
alias = this.fromEntity.alias.name;
|
||||
|
||||
@ -467,7 +470,7 @@ export class QueryBuilder<Entity> {
|
||||
this.joins
|
||||
.filter(join => this.selects.indexOf(join.alias.name) !== -1)
|
||||
.forEach(join => {
|
||||
const joinMetadata = this._aliasMap.getEntityMetadataByAlias(join.alias);
|
||||
const joinMetadata = this.aliasMap.getEntityMetadataByAlias(join.alias);
|
||||
joinMetadata.columns.forEach(column => {
|
||||
allSelects.push(join.alias.name + "." + column.name + " AS " + join.alias.name + "_" + column.propertyName);
|
||||
});
|
||||
@ -521,12 +524,12 @@ export class QueryBuilder<Entity> {
|
||||
const joinType = join.type === "inner" ? "INNER" : "LEFT";
|
||||
const appendedCondition = join.condition ? " AND " + join.condition : "";
|
||||
const parentAlias = join.alias.parentAliasName;
|
||||
const parentMetadata = this._aliasMap.getEntityMetadataByAlias(this._aliasMap.findAliasByName(parentAlias));
|
||||
const parentMetadata = this.aliasMap.getEntityMetadataByAlias(this.aliasMap.findAliasByName(parentAlias));
|
||||
const parentTable = parentMetadata.table.name;
|
||||
const parentTableColumn = parentMetadata.primaryColumn.name;
|
||||
const relation = parentMetadata.findRelationWithDbName(join.alias.parentPropertyName);
|
||||
const junctionMetadata = relation.junctionEntityMetadata;
|
||||
const joinMetadata = this._aliasMap.getEntityMetadataByAlias(join.alias);
|
||||
const joinMetadata = this.aliasMap.getEntityMetadataByAlias(join.alias);
|
||||
const joinTable = joinMetadata.table.name;
|
||||
const joinTableColumn = joinMetadata.primaryColumn.name;
|
||||
|
||||
|
||||
@ -1,5 +1,8 @@
|
||||
import {ColumnMetadata} from "../../metadata-builder/metadata/ColumnMetadata";
|
||||
|
||||
/**
|
||||
* @internal
|
||||
*/
|
||||
export class Alias {
|
||||
isMain: boolean;
|
||||
name: string;
|
||||
|
||||
@ -1,6 +1,9 @@
|
||||
import {EntityMetadata} from "../../metadata-builder/metadata/EntityMetadata";
|
||||
import {Alias} from "./Alias";
|
||||
|
||||
/**
|
||||
* @internal
|
||||
*/
|
||||
export class AliasMap {
|
||||
|
||||
// -------------------------------------------------------------------------
|
||||
|
||||
@ -1,6 +1,9 @@
|
||||
import {EntityMetadata} from "../../metadata-builder/metadata/EntityMetadata";
|
||||
import {QueryBuilder} from "../QueryBuilder";
|
||||
|
||||
/**
|
||||
* @internal
|
||||
*/
|
||||
interface LoadMap {
|
||||
name: string;
|
||||
child: LoadMap[];
|
||||
@ -9,6 +12,8 @@ interface LoadMap {
|
||||
/**
|
||||
* Transforms plain old javascript object
|
||||
* Entity is constructed based on its entity metadata.
|
||||
*
|
||||
* @internal
|
||||
*/
|
||||
export class PlainObjectToDatabaseEntityTransformer<Entity> {
|
||||
|
||||
@ -22,7 +27,7 @@ export class PlainObjectToDatabaseEntityTransformer<Entity> {
|
||||
if (!metadata.hasPrimaryKey || !object[metadata.primaryColumn.name])
|
||||
return Promise.reject<Entity>("Given object does not have a primary column, cannot transform it to database entity.");
|
||||
|
||||
const alias = queryBuilder.aliasMap.mainAlias.name;
|
||||
const alias = queryBuilder.alias;
|
||||
const needToLoad = this.buildLoadMap(object, metadata, true);
|
||||
|
||||
this.join(queryBuilder, needToLoad, alias);
|
||||
|
||||
@ -3,6 +3,8 @@ import {EntityMetadata} from "../../metadata-builder/metadata/EntityMetadata";
|
||||
/**
|
||||
* Transforms plain old javascript object
|
||||
* Entity is constructed based on its entity metadata.
|
||||
*
|
||||
* @internal
|
||||
*/
|
||||
export class PlainObjectToNewEntityTransformer {
|
||||
|
||||
|
||||
@ -8,6 +8,8 @@ import {OrmUtils} from "../../util/OrmUtils";
|
||||
/**
|
||||
* Transforms raw sql results returned from the database into entity object.
|
||||
* Entity is constructed based on its entity metadata.
|
||||
*
|
||||
* @internal
|
||||
*/
|
||||
export class RawSqlResultsToEntityTransformer {
|
||||
|
||||
|
||||
6
src/relations.ts
Normal file
6
src/relations.ts
Normal file
@ -0,0 +1,6 @@
|
||||
export * from "./decorator/relations/OneToOne";
|
||||
export * from "./decorator/relations/OneToMany";
|
||||
export * from "./decorator/relations/ManyToOne";
|
||||
export * from "./decorator/relations/ManyToMany";
|
||||
export * from "./decorator/relations/ManyToManyInverse";
|
||||
export * from "./decorator/relations/OneToOneInverse";
|
||||
@ -4,6 +4,9 @@ import {ColumnMetadata} from "../metadata-builder/metadata/ColumnMetadata";
|
||||
import {ForeignKeyMetadata} from "../metadata-builder/metadata/ForeignKeyMetadata";
|
||||
import {TableMetadata} from "../metadata-builder/metadata/TableMetadata";
|
||||
|
||||
/**
|
||||
* @internal
|
||||
*/
|
||||
export class MysqlSchemaBuilder extends SchemaBuilder {
|
||||
|
||||
constructor(private driver: MysqlDriver) {
|
||||
|
||||
@ -2,6 +2,9 @@ import {ColumnMetadata} from "../metadata-builder/metadata/ColumnMetadata";
|
||||
import {ForeignKeyMetadata} from "../metadata-builder/metadata/ForeignKeyMetadata";
|
||||
import {TableMetadata} from "../metadata-builder/metadata/TableMetadata";
|
||||
|
||||
/**
|
||||
* todo: make internal too (need to refactor driver).
|
||||
*/
|
||||
export abstract class SchemaBuilder {
|
||||
|
||||
abstract getChangedColumns(tableName: string, columns: ColumnMetadata[]): Promise<{columnName: string, hasPrimaryKey: boolean}[]>;
|
||||
|
||||
@ -6,7 +6,9 @@ import {EntityMetadata} from "../metadata-builder/metadata/EntityMetadata";
|
||||
import {SchemaBuilder} from "../schema-builder/SchemaBuilder";
|
||||
|
||||
/**
|
||||
* Creates indexes based on the given metadata
|
||||
* Creates indexes based on the given metadata.
|
||||
*
|
||||
* @internal
|
||||
*/
|
||||
export class SchemaCreator {
|
||||
|
||||
|
||||
@ -5,6 +5,8 @@ import {EventListenerTypes} from "../metadata-builder/types/EventListenerTypes";
|
||||
|
||||
/**
|
||||
* Broadcaster provides a helper methods to broadcast events to the subscribers.
|
||||
*
|
||||
* @internal
|
||||
*/
|
||||
export class Broadcaster {
|
||||
|
||||
|
||||
2
src/tables.ts
Normal file
2
src/tables.ts
Normal file
@ -0,0 +1,2 @@
|
||||
export * from "./decorator/tables/Table";
|
||||
export * from "./decorator/tables/AbstractTable";
|
||||
@ -7,10 +7,7 @@ import {ConnectionManager} from "./connection/ConnectionManager";
|
||||
import {Connection} from "./connection/Connection";
|
||||
import {MysqlDriver} from "./driver/MysqlDriver";
|
||||
|
||||
/**
|
||||
* Global connection manager.
|
||||
*/
|
||||
export const connectionManager = new ConnectionManager();
|
||||
const connectionManager = new ConnectionManager();
|
||||
|
||||
/**
|
||||
* All options to help to create a new connection.
|
||||
@ -80,4 +77,24 @@ export function createConnection(options: CreateConnectionOptions): Promise<Conn
|
||||
connectionManager.importSubscribers(options.subscribers);
|
||||
|
||||
return connection.connect().then(() => connection);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Default export. Global connection manager.
|
||||
*/
|
||||
export default connectionManager;
|
||||
|
||||
// export everything commonly used
|
||||
export {Connection} from "./connection/Connection";
|
||||
export {ConnectionManager} from "./connection/ConnectionManager";
|
||||
export {ConnectionOptions} from "./connection/ConnectionOptions";
|
||||
export {Driver} from "./driver/Driver";
|
||||
export {MysqlDriver} from "./driver/MysqlDriver";
|
||||
export {QueryBuilder} from "./query-builder/QueryBuilder";
|
||||
export {EntityManager} from "./repository/EntityManager";
|
||||
export {Repository} from "./repository/Repository";
|
||||
export {FindOptions} from "./repository/FindOptions";
|
||||
export {InsertEvent} from "./subscriber/event/InsertEvent";
|
||||
export {UpdateEvent} from "./subscriber/event/UpdateEvent";
|
||||
export {RemoveEvent} from "./subscriber/event/RemoveEvent";
|
||||
export {EventSubscriberInterface} from "./subscriber/EventSubscriberInterface";
|
||||
@ -2,6 +2,7 @@ import * as fs from "fs";
|
||||
|
||||
/**
|
||||
* Loads all exported classes from the given directory.
|
||||
* @internal
|
||||
*/
|
||||
export class DirectoryExportedClassesLoader {
|
||||
|
||||
|
||||
@ -1,4 +1,4 @@
|
||||
|
||||
/** @internal */
|
||||
export class OrmUtils {
|
||||
|
||||
static groupBy<T, R>(array: T[], propertyCallback: (item: T) => R): { id: R, items: T[] }[] {
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user