Skip to content

Commit

Permalink
feat(migrations): add support for migrations (closes #38)
Browse files Browse the repository at this point in the history
  • Loading branch information
rogerpadilla committed Aug 17, 2021
1 parent b3ddb2b commit 9d239ac
Show file tree
Hide file tree
Showing 6 changed files with 28 additions and 5 deletions.
2 changes: 1 addition & 1 deletion packages/core/src/querier/abstractSqlQuerier-it.ts
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ import { AbstractQuerierIt } from './abstractQuerier-it';
import { AbstractSqlQuerier } from './abstractSqlQuerier';

export abstract class AbstractSqlQuerierIt extends AbstractQuerierIt<AbstractSqlQuerier> {
readonly idType: string = 'INTEGER PRIMARY KEY';
readonly idType: string = 'SERIAL PRIMARY KEY';

constructor(pool: QuerierPool<AbstractSqlQuerier>) {
super(pool);
Expand Down
3 changes: 2 additions & 1 deletion packages/core/src/querier/abstractSqlQuerier-spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,8 @@ import { QuerierPool } from '@uql/core/type';
import { AbstractSqlQuerier } from './abstractSqlQuerier';

export abstract class AbstractSqlQuerierSpec implements Spec {
readonly idType: string = 'INTEGER PRIMARY KEY';
readonly idType: string = 'SERIAL PRIMARY KEY';

querier: AbstractSqlQuerier;

constructor(readonly pool: QuerierPool<AbstractSqlQuerier>) {}
Expand Down
8 changes: 6 additions & 2 deletions packages/core/src/querier/abstractSqlQuerier.ts
Original file line number Diff line number Diff line change
Expand Up @@ -151,7 +151,8 @@ export abstract class AbstractSqlQuerier extends AbstractQuerier {
}

override async changeColumn(table: string, column: string, options?: Column) {
await this.run(``);
const sqlOptions = this.columnOptionsToSql(options);
await this.run(`ALTER TABLE ${this.escapeId(table)} CHANGE COLUMN ${this.escapeId(column)}${sqlOptions}`);
}

override async renameColumn(table: string, oldColumn: string, newColumn: string) {
Expand All @@ -160,6 +161,9 @@ export abstract class AbstractSqlQuerier extends AbstractQuerier {

columnOptionsToSql(opts: Column) {
let sql = '';
if (opts.type) {
sql += ` ${opts.type.toUpperCase()}`;
}
if (opts.required) {
sql += ' NOT NULL';
}
Expand All @@ -172,7 +176,7 @@ export abstract class AbstractSqlQuerier extends AbstractQuerier {
if (opts.unique) {
sql += ' UNIQUE';
}
if (opts.primary) {
if (opts.id) {
sql += ' PRIMARY KEY';
}
if (opts.comment) {
Expand Down
2 changes: 1 addition & 1 deletion packages/core/src/type/querier.ts
Original file line number Diff line number Diff line change
Expand Up @@ -192,7 +192,7 @@ export type Column = {
/**
* Primary key flag
*/
primary?: boolean;
id?: boolean;
required?: boolean;
default?: string;
comment?: string;
Expand Down
9 changes: 9 additions & 0 deletions packages/sqlite/src/sqlite3Querier.it.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3,9 +3,18 @@ import { AbstractSqlQuerierIt } from '@uql/core/querier/abstractSqlQuerier-it';
import { Sqlite3QuerierPool } from './sqlite3QuerierPool';

export class Sqlite3QuerierIt extends AbstractSqlQuerierIt {
readonly idType = 'INTEGER PRIMARY KEY';

constructor() {
super(new Sqlite3QuerierPool({ filename: ':memory:' }));
}

async beforeAll() {
await super.beforeAll();
this.querier = await this.pool.getQuerier();
await this.querier.run('PRAGMA foreign_keys = ON');
await this.querier.release();
}
}

createSpec(new Sqlite3QuerierIt());
9 changes: 9 additions & 0 deletions packages/sqlite/src/sqliteQuerier.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3,9 +3,18 @@ import { createSpec } from '@uql/core/test';
import { Sqlite3QuerierPool } from './sqlite3QuerierPool';

class SqliteQuerierSpec extends AbstractSqlQuerierSpec {
readonly idType = 'INTEGER PRIMARY KEY';

constructor() {
super(new Sqlite3QuerierPool({ filename: ':memory:' }));
}

async beforeAll() {
await super.beforeAll();
this.querier = await this.pool.getQuerier();
await this.querier.run('PRAGMA foreign_keys = ON');
await this.querier.release();
}
}

createSpec(new SqliteQuerierSpec());

0 comments on commit 9d239ac

Please sign in to comment.