Skip to content

Commit

Permalink
refactored database classes
Browse files Browse the repository at this point in the history
  • Loading branch information
Umed Khudoiberdiev committed Aug 29, 2016
1 parent 603c56a commit 3180d13
Show file tree
Hide file tree
Showing 14 changed files with 316 additions and 32 deletions.
4 changes: 2 additions & 2 deletions src/driver/DatabaseConnection.ts
Original file line number Diff line number Diff line change
Expand Up @@ -6,12 +6,12 @@ export interface DatabaseConnection {
/**
* Id of the connection.
*/
id: number;
readonly id: number;

/**
* Native driver's connection.
*/
connection: any;
readonly connection: any;

/**
* Indicates if transaction is active for this connection.
Expand Down
46 changes: 46 additions & 0 deletions src/driver/QueryRunner.ts
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,9 @@ import {ColumnMetadata} from "../metadata/ColumnMetadata";
import {TableMetadata} from "../metadata/TableMetadata";
import {TableSchema} from "../schema-builder/TableSchema";

/**
* Runs queries on a single database connection.
*/
export interface QueryRunner {

/**
Expand Down Expand Up @@ -64,16 +67,59 @@ export interface QueryRunner {
*/
insertIntoClosureTable(tableName: string, newEntityId: any, parentId: any, hasLevel: boolean): Promise<number>;

/**
* Loads all tables (with given names) from the database and creates a TableSchema from them.
*/
loadSchemaTables(tableNames: string[]): Promise<TableSchema[]>;

/**
* Creates a new table from the given table metadata and column metadatas.
*/
createTable(table: TableMetadata, columns: ColumnMetadata[]): Promise<void>;

/**
* Creates a new column from the column metadata in the table.
*/
createColumn(tableName: string, column: ColumnMetadata): Promise<void>;

/**
* Changes a column in the table.
*/
changeColumn(tableName: string, oldColumn: ColumnSchema, newColumn: ColumnMetadata): Promise<void>;

/**
* Drops the column in the table.
*/
dropColumn(tableName: string, columnName: string): Promise<void>;

/**
* Creates a new foreign.
*/
createForeignKey(foreignKey: ForeignKeyMetadata): Promise<void>;

/**
* Drops a foreign key from the table.
*/
dropForeignKey(tableName: string, foreignKeyName: string): Promise<void>;

/**
* Creates a new index.
*/
createIndex(tableName: string, index: IndexMetadata): Promise<void>;

/**
* Drops an index from the table.
*/
dropIndex(tableName: string, indexName: string): Promise<void>;

/**
* Creates a new unique key.
*/
createUniqueKey(tableName: string, columnName: string, keyName: string): Promise<void>;

/**
* Creates a database type from a given column metadata.
*/
normalizeType(column: ColumnMetadata): any;

}
2 changes: 2 additions & 0 deletions src/driver/error/ConnectionIsNotSetError.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,6 @@
/**
* Thrown when user tries to execute operation that requires connection to be established.
*
* @internal
*/
export class ConnectionIsNotSetError extends Error {
Expand Down
2 changes: 2 additions & 0 deletions src/driver/error/DataTypeNotSupportedByDriverError.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,6 @@
/**
* Thrown if some data type is not supported by a driver.
*
* @internal
*/
export class DataTypeNotSupportedByDriverError extends Error {
Expand Down
2 changes: 2 additions & 0 deletions src/driver/error/DriverOptionNotSetError.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,6 @@
/**
* Thrown if some required driver's option is not set.
*
* @internal
*/
export class DriverOptionNotSetError extends Error {
Expand Down
2 changes: 2 additions & 0 deletions src/driver/error/DriverPackageLoadError.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,6 @@
/**
* Thrown when some unexpected error occur on driver packages load.
*
* @internal
*/
export class DriverPackageLoadError extends Error {
Expand Down
2 changes: 2 additions & 0 deletions src/driver/error/DriverPackageNotInstalledError.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,6 @@
/**
* Thrown when required driver's package is not installed.
*
* @internal
*/
export class DriverPackageNotInstalledError extends Error {
Expand Down
12 changes: 12 additions & 0 deletions src/driver/error/QueryRunnerAlreadyReleasedError.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
/**
* @internal
*/
export class QueryRunnerAlreadyReleasedError extends Error {
name = "QueryRunnerAlreadyReleasedError";

constructor() {
super();
this.message = `Query runner already released. Cannot run queries anymore.`;
}

}
2 changes: 2 additions & 0 deletions src/driver/error/TransactionAlreadyStartedError.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,6 @@
/**
* Thrown when transaction is already started and user tries to run it again.
*
* @internal
*/
export class TransactionAlreadyStartedError extends Error {
Expand Down
2 changes: 2 additions & 0 deletions src/driver/error/TransactionNotStartedError.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,6 @@
/**
* Thrown when transaction is not started yet and user tries to run commit or rollback.
*
* @internal
*/
export class TransactionNotStartedError extends Error {
Expand Down
2 changes: 1 addition & 1 deletion src/driver/mysql/MysqlDriver.ts
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ import {ObjectLiteral} from "../../common/ObjectLiteral";
import {ColumnMetadata} from "../../metadata/ColumnMetadata";

/**
* This driver organizes work with mysql database.
* Organizes communication with MySQL DBMS.
*/
export class MysqlDriver implements Driver {

Expand Down
Loading

0 comments on commit 3180d13

Please sign in to comment.