Skip to main content

@hodfords/typeorm-migrations

Hodfords Logo

Installation 🤖

Install the typeorm-migrations package with:

npm install @hodfords/typeorm-migrations --save

Usage

We develop a class that abstracts the typeorm migration, making it easier to understand. For the update command, let's use pure queries for the time being.

Example

export class CreateUserTable1626749239046 extends BaseMigration {
async run(queryRunner: QueryRunner) {
await this.create('User', (table) => {
table.primaryUuid('id');
table.string('email').index();
table.string('firstName').nullable();
table.string('lastName').nullable();
table.string('password').nullable();
table.integer('role');
table.string('language').length(10).default("'en'");
table.timestamp('lastLoginAt').nullable();
table.uuid('enterpriseId').nullable().index().foreign('Enterprise');
table.createdAt().index();
table.updatedAt();
table.deletedAt();
});
}

async rollback(queryRunner: QueryRunner) {
await this.drop('User');
}
}

Table methods

The Table class provides various methods for defining columns in a database schema

    string(name: string, length?: number, options?: Partial<TableColumnOptions>): BaseColumn;
strings(name: string, options?: Partial<TableColumnOptions>): BaseColumn;
uuid(name?: string, options?: Partial<TableColumnOptions>): BaseColumn;
uuids(name: string, options?: Partial<TableColumnOptions>): BaseColumn;
primaryUuid(name?: string, options?: Partial<TableColumnOptions>): BaseColumn;
id(name: string = 'id', options: Partial<TableColumnOptions> = {}): BaseColumn
integer(name: string, options?: Partial<TableColumnOptions>): BaseColumn;
integers(name: string, options?: Partial<TableColumnOptions>): BaseColumn;
timestamp(name: string, options?: Partial<TableColumnOptions>): BaseColumn;
timestamptz(name: string, options: Partial<TableColumnOptions> = null): BaseColumn;
boolean(name: string, options?: Partial<TableColumnOptions>): BaseColumn;
jsonb(name: string, options?: Partial<TableColumnOptions>): BaseColumn;
json(name: string, options?: Partial<TableColumnOptions>): BaseColumn;
decimal(name: string,precision: number = 10,scale: number = 2,options?: Partial<TableColumnOptions>): BaseColumn;
enum(
name: string,
enumName: string,
enumValues: Record<string, string> | string[],
options: Partial<TableColumnOptions> = null
): BaseColumn;
char(name: string, length: number, options: Partial<TableColumnOptions> = null): BaseColumn;
increments(name: string, options: Partial<TableColumnOptions> = null): BaseColumn;
smallIncrements(name: string, options: Partial<TableColumnOptions> = null): BaseColumn;
bigIncrements(name: string, options: Partial<TableColumnOptions> = null): BaseColumn;
real(name: string, options: Partial<TableColumnOptions> = null): BaseColumn;
doublePrecision(name: string, options: Partial<TableColumnOptions> = null): BaseColumn;
time(name: string, options: Partial<TableColumnOptions> = null): BaseColumn;
baseTime(): void;
timetz(name: string, options: Partial<TableColumnOptions> = null): BaseColumn;
geography(
name: string,
spatialFeatureType: string,
srid = 4326,
options?: Partial<TableColumnOptions>
): BaseColumn;
geometry(
name: string,
spatialFeatureType: string,
srid = 0,
options?: Partial<TableColumnOptions>
): BaseColumn;
macaddr(name: string, options?: Partial<TableColumnOptions>): BaseColumn;
inet(name: string, options?: Partial<TableColumnOptions>): BaseColumn;
createdAt(): BaseColumn;
updatedAt(): BaseColumn;
deletedAt(): BaseColumn;

Column method

The BaseColumn class provides methods that define and configure properties for a database column, including length, nullability, uniqueness, indexing, default values, and foreign key relationships.

    length(length: number): this;
nullable(): this;
unique(): this;
index(): this;
default(value: any): this;
autoIncrement(): this;
useCurrent(): this;
comment(): this;
foreign(table: string, column?: string, onDelete?: string, onUpdate?: string): void;

License 📝

This project is licensed under the MIT License