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:
Umed Khudoiberdiev 2016-04-24 23:28:48 +05:00
parent db7cb6f2e8
commit 31f0c0b2e8
94 changed files with 307 additions and 199 deletions

View File

@ -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 {

View File

@ -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";

View File

@ -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 {

View File

@ -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";

View File

@ -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")

View File

@ -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")

View File

@ -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";

View File

@ -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")

View File

@ -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";

View File

@ -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";

View File

@ -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";

View File

@ -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";

View File

@ -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 {

View File

@ -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 {

View File

@ -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")

View File

@ -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 {

View File

@ -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")

View File

@ -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 {

View File

@ -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";

View File

@ -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 {

View File

@ -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 {

View File

@ -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")

View File

@ -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 {

View File

@ -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")

View File

@ -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 {

View File

@ -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";

View File

@ -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 {

View File

@ -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 {

View File

@ -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")

View File

@ -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 {

View File

@ -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")

View File

@ -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 {

View File

@ -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";

View File

@ -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";

View File

@ -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";

View File

@ -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";

View File

@ -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";

View File

@ -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";

View File

@ -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";

View File

@ -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";

View File

@ -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";

View File

@ -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";

View File

@ -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";

View File

@ -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";

View File

@ -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";

View File

@ -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";

View File

@ -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
View 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";

View File

@ -4,6 +4,8 @@ import {ConnectionOptions} from "./ConnectionOptions";
/**
* Array for the connections.
*
* @internal
*/
export class ConnectionArray extends Array<Connection> {

View File

@ -1,3 +1,6 @@
/**
* @internal
*/
export class BroadcasterNotFoundError extends Error {
name = "BroadcasterNotFoundError";

View File

@ -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.";

View File

@ -1,3 +1,6 @@
/**
* @internal
*/
export class ConnectionNotFoundError extends Error {
name = "ConnectionNotFoundError";

View File

@ -1,3 +1,6 @@
/**
* @internal
*/
export class MetadataNotFoundError extends Error {
name = "MetadataNotFoundError";

View File

@ -1,3 +1,6 @@
/**
* @internal
*/
export class RepositoryNotFoundError extends Error {
name = "RepositoryNotFoundError";

View File

@ -1,3 +1,6 @@
/**
* @internal
*/
export class SchemaNotFoundError extends Error {
name = "SchemaNotFoundError";

View File

@ -1,4 +0,0 @@
export * from "./columns/Column";
export * from "./columns/PrimaryColumn";
export * from "./columns/CreateDateColumn";
export * from "./columns/UpdateDateColumn";

View File

@ -1,2 +0,0 @@
export * from "./indices/Index";
export * from "./indices/CompoundIndex";

View File

@ -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";

View File

@ -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";

View File

@ -1,2 +0,0 @@
export * from "./tables/Table";
export * from "./tables/AbstractTable";

View File

@ -2,6 +2,7 @@ import {Connection} from "../connection/Connection";
/**
* Provides base functionality for all driver implementations.
* @internal
*/
export abstract class BaseDriver {

View File

@ -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.

View File

@ -1,3 +1,6 @@
/**
* @internal
*/
export class ConnectionIsNotSetError extends Error {
name = "ConnectionIsNotSetError";

2
src/indices.ts Normal file
View File

@ -0,0 +1,2 @@
export * from "./decorator/indices/Index";
export * from "./decorator/indices/CompoundIndex";

7
src/listeners.ts Normal file
View 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";

View File

@ -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 {

View File

@ -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 {

View File

@ -1,3 +1,6 @@
/**
* @internal
*/
export class MetadataAlreadyExistsError extends Error {
name = "MetadataAlreadyExistsError";

View File

@ -1,3 +1,6 @@
/**
* @internal
*/
export class MetadataWithSuchNameAlreadyExistsError extends Error {
name = "MetadataWithSuchNameAlreadyExistsError";

View File

@ -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 {

View File

@ -10,6 +10,7 @@ import {Broadcaster} from "../subscriber/Broadcaster";
/**
* Executes PersistOperation in the given connection.
* @internal
*/
export class PersistOperationExecutor {

View File

@ -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";

View File

@ -1,3 +1,6 @@
/**
* @internal
*/
export class InsertOperation {
constructor(public entity: any,
public entityId?: number) {

View File

@ -1,5 +1,8 @@
import {EntityMetadata} from "../../metadata-builder/metadata/EntityMetadata";
/**
* @internal
*/
export class JunctionInsertOperation {
constructor(public metadata: EntityMetadata,
public entity1: any,

View File

@ -1,5 +1,8 @@
import {EntityMetadata} from "../../metadata-builder/metadata/EntityMetadata";
/**
* @internal
*/
export class JunctionRemoveOperation {
constructor(public metadata: EntityMetadata,
public entity1: any,

View File

@ -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?

View File

@ -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,

View File

@ -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,

View File

@ -1,5 +1,8 @@
import {ColumnMetadata} from "../../metadata-builder/metadata/ColumnMetadata";
/**
* @internal
*/
export class UpdateOperation {
constructor(public entity: any,
public entityId: any,

View File

@ -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;

View File

@ -1,5 +1,8 @@
import {ColumnMetadata} from "../../metadata-builder/metadata/ColumnMetadata";
/**
* @internal
*/
export class Alias {
isMain: boolean;
name: string;

View File

@ -1,6 +1,9 @@
import {EntityMetadata} from "../../metadata-builder/metadata/EntityMetadata";
import {Alias} from "./Alias";
/**
* @internal
*/
export class AliasMap {
// -------------------------------------------------------------------------

View File

@ -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);

View File

@ -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 {

View File

@ -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
View 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";

View File

@ -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) {

View File

@ -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}[]>;

View File

@ -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 {

View File

@ -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
View File

@ -0,0 +1,2 @@
export * from "./decorator/tables/Table";
export * from "./decorator/tables/AbstractTable";

View File

@ -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";

View File

@ -2,6 +2,7 @@ import * as fs from "fs";
/**
* Loads all exported classes from the given directory.
* @internal
*/
export class DirectoryExportedClassesLoader {

View File

@ -1,4 +1,4 @@
/** @internal */
export class OrmUtils {
static groupBy<T, R>(array: T[], propertyCallback: (item: T) => R): { id: R, items: T[] }[] {