Skip to content

Commit 17baabe

Browse files
author
fernandocode
committed
v.0.4.5
Corrigido problema com alter table com coluna não inicializada no modelo não estava observando o mapeamento. #1013
1 parent c34b05b commit 17baabe

8 files changed

Lines changed: 57 additions & 56 deletions

File tree

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "database-builder",
3-
"version": "0.4.4",
3+
"version": "0.4.5",
44
"description": "Library to assist in creating and maintaining SQL commands.",
55
"main": "./src/index.js",
66
"types": "./src/index.d.ts",

src/core/columns-base-builder.ts

Lines changed: 13 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -48,9 +48,7 @@ export abstract class ColumnsBaseBuilder<
4848
): TThis {
4949
return this.setColumn(
5050
Utils.getColumn(columnExpression),
51-
type
52-
? this._databaseHelper.getFieldType(type)
53-
: Utils.getType(this.modelToSave, columnExpression),
51+
this.getFieldType(columnExpression, type),
5452
primaryKeyType
5553
);
5654
}
@@ -105,4 +103,16 @@ export abstract class ColumnsBaseBuilder<
105103
}
106104
}
107105
}
106+
107+
private getFieldType<TReturn extends ValueTypeToParse>(
108+
columnExpression: ExpressionOrColumn<TReturn, T>, type: new () => TReturn
109+
): FieldType {
110+
if (type) {
111+
return this._databaseHelper.getFieldType(type);
112+
}
113+
const fieldTypeByMapper = this.mapperTable ? this.mapperTable.getColumnByField(columnExpression) : void 0;
114+
return fieldTypeByMapper
115+
? fieldTypeByMapper.fieldType
116+
: Utils.getType(this.modelToSave, columnExpression);
117+
}
108118
}

src/ddl/alter/alter-builder.ts

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -10,9 +10,13 @@ export class AlterBuilder<T> extends DdlBaseBuilder<T> {
1010
private _patternOperation: (column: string) => string;
1111

1212
constructor(
13-
private typeT: new () => T
13+
typeT: new () => T,
14+
private readonly _mapperTable: MapperTable
1415
) {
15-
super(typeT.name);
16+
super(typeT && typeT.name ? typeT.name : _mapperTable.tableName);
17+
if (Utils.isNull(_mapperTable)) {
18+
throw new DatabaseBuilderError(`Mapper not found for '${this._tablename}'`);
19+
}
1620
}
1721

1822
public addColumn<TReturn extends ValueTypeToParse>(
@@ -23,8 +27,8 @@ export class AlterBuilder<T> extends DdlBaseBuilder<T> {
2327
return super.columnsBase(
2428
column => column.set(columnExpression, void 0, type),
2529
new DdlColumnsBuilder<T>(
26-
void 0,
27-
new this.typeT()
30+
this._mapperTable,
31+
void 0
2832
),
2933
this);
3034
}

src/ddl/alter/alter.ts

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,15 +2,17 @@ import { DatabaseBase } from "../../definitions/database-definition";
22
import { DdlBase } from "../ddl-base";
33
import { AlterBuilder } from "./alter-builder";
44
import { ExpressionOrColumn, ValueTypeToParse } from "../../core/utils";
5+
import { MapperTable } from "../../mapper-table";
56

67
export class Alter<T> extends DdlBase<T, AlterBuilder<T>> {
78

89
constructor(
910
typeT: new () => T,
11+
mapperTable: MapperTable,
1012
database: DatabaseBase = void 0,
1113
enableLog: boolean = true,
1214
) {
13-
super(new AlterBuilder(typeT), database, enableLog);
15+
super(new AlterBuilder(typeT, mapperTable), database, enableLog);
1416
}
1517

1618
public addColumn<TReturn extends ValueTypeToParse>(

src/ddl/ddl-base-builder.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ export abstract class DdlBaseBuilder<T> {
1111
} as ColumnsBaseCompiled;
1212

1313
constructor(
14-
protected _tablename: string
14+
protected readonly _tablename: string
1515
) {
1616
}
1717

src/ddl/ddl.ts

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -10,9 +10,9 @@ import { MapperTable } from "../mapper-table";
1010
export class Ddl {
1111

1212
constructor(
13-
private _database: DatabaseBase = void 0,
14-
private _mappersTable: GetMapper,
15-
public enableLog: boolean = true) {
13+
private readonly _database: DatabaseBase = void 0,
14+
private readonly _mappersTable: GetMapper,
15+
public readonly enableLog: boolean = true) {
1616
}
1717

1818
public create<T>(
@@ -25,9 +25,10 @@ export class Ddl {
2525

2626
public alter<T>(
2727
typeT: new () => T,
28+
mapperTable: MapperTable = this._mappersTable.get(typeT).mapperTable,
2829
database: DatabaseBase = this.getDatabase()
2930
): Alter<T> {
30-
return new Alter(typeT, database, this.enableLog);
31+
return new Alter(typeT, mapperTable, database, this.enableLog);
3132
}
3233

3334
public drop<T>(

src/test/alter.spec.ts

Lines changed: 26 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -2,51 +2,71 @@ import { Cliente } from "./models/cliente";
22
import { Alter } from "./../ddl/alter/alter";
33
import { expect } from "chai";
44
import { Classificacao } from "./models/classificacao";
5+
import { ReferencesModelTest } from "./models/reference-model-test";
6+
import { getMapper } from "./mappers-table-new";
57

68
describe("Alter", () => {
79

10+
const mapper = getMapper();
11+
812
it("Add column", () => {
9-
const alter = new Alter(Cliente);
13+
const alter = new Alter(Cliente, mapper.get(Cliente).mapperTable);
1014
alter.addColumn(x => x.razaoSocial);
1115
const result = alter.compile();
1216
expect(result[0].length > 0).to.equal(true);
1317
expect(result[0]).to.equal(`ALTER TABLE Cliente ADD COLUMN razaoSocial TEXT;`);
1418
});
1519

20+
it("Add column without auto mapper", () => {
21+
const alter = new Alter(ReferencesModelTest, mapper.get(ReferencesModelTest).mapperTable);
22+
alter.addColumn(x => x.name);
23+
const result = alter.compile();
24+
expect(result[0].length > 0).to.equal(true);
25+
expect(result[0]).to.equal(`ALTER TABLE ReferencesModelTest ADD COLUMN name TEXT;`);
26+
});
27+
28+
it("Add column without auto mapper explicit type", () => {
29+
const alter = new Alter(ReferencesModelTest, mapper.get(ReferencesModelTest).mapperTable);
30+
alter.addColumn(x => x.name, String);
31+
const result = alter.compile();
32+
expect(result[0].length > 0).to.equal(true);
33+
expect(result[0]).to.equal(`ALTER TABLE ReferencesModelTest ADD COLUMN name TEXT;`);
34+
});
35+
1636
it("Add column string name column", () => {
17-
const alter = new Alter(Cliente);
37+
const alter = new Alter(Cliente, mapper.get(Cliente).mapperTable);
1838
alter.addColumn("novaColuna", Number);
1939
const result = alter.compile();
2040
expect(result[0].length > 0).to.equal(true);
2141
expect(result[0]).to.equal(`ALTER TABLE Cliente ADD COLUMN novaColuna INTEGER;`);
2242
});
2343

2444
it("Rename column", () => {
25-
const alter = new Alter(Cliente);
45+
const alter = new Alter(Cliente, mapper.get(Cliente).mapperTable);
2646
alter.renameColumn(x => x.razaoSocial, x => x.nomeFantasia);
2747
const result = alter.compile();
2848
expect(result[0].length > 0).to.equal(true);
2949
expect(result[0]).to.equal(`ALTER TABLE Cliente RENAME COLUMN razaoSocial TO nomeFantasia;`);
3050
});
3151

3252
it("Rename column string name column", () => {
33-
const alter = new Alter(Cliente);
53+
const alter = new Alter(Cliente, mapper.get(Cliente).mapperTable);
3454
alter.renameColumn("novaColuna", x => x.nomeFantasia);
3555
const result = alter.compile();
3656
expect(result[0].length > 0).to.equal(true);
3757
expect(result[0]).to.equal(`ALTER TABLE Cliente RENAME COLUMN novaColuna TO nomeFantasia;`);
3858
});
3959

4060
it("Rename table", () => {
41-
const alter = new Alter(Cliente);
61+
const alter = new Alter(Cliente, mapper.get(Cliente).mapperTable);
4262
alter.renameTable(Classificacao);
4363
const result = alter.compile();
4464
expect(result[0].length > 0).to.equal(true);
4565
expect(result[0]).to.equal(`ALTER TABLE Cliente RENAME TO Classificacao;`);
4666
});
4767

4868
it("Rename table string name column", () => {
49-
const alter = new Alter(Cliente);
69+
const alter = new Alter(Cliente, mapper.get(Cliente).mapperTable);
5070
alter.renameTable("NovaTabela");
5171
const result = alter.compile();
5272
expect(result[0].length > 0).to.equal(true);

src/test/sqlite.spec.ts

Lines changed: 0 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -415,42 +415,6 @@ describe("SQLite", () => {
415415
const dados = Object.assign({}, ObjectToTest.contasReceber);
416416
dados.dataRecebimento = "2018-06-08T00:00:00Z";
417417

418-
// try {
419-
// const a = crud.insert(ContasAReceber, dados).execute();
420-
// a.subscribe(result => {
421-
// try {
422-
// console.log("result", result);
423-
// } catch (error) {
424-
// console.warn("gggggg", error);
425-
// }
426-
// }, error => {
427-
// console.warn("ddddd", error);
428-
// });
429-
// } catch (error) {
430-
// console.warn("hhhhhh", error);
431-
// }
432-
433-
// try {
434-
// crud.insert(ContasAReceber, dados).execute().toPromise().then(result => {
435-
// try {
436-
// console.log("result p", result);
437-
// } catch (error) {
438-
// console.warn("aaaaaa", error);
439-
// }
440-
// }).catch(error => {
441-
// console.warn("rrrrrrr", error);
442-
// });
443-
// } catch (error) {
444-
// console.warn("qqqqqqqq", error);
445-
// }
446-
447-
// try {
448-
// const insertResult1 = await crud.insert(ContasAReceber, dados).execute().toPromise();
449-
// expect(insertResult1[0].rowsAffected).to.equal(1);
450-
// } catch (error) {
451-
// console.warn("eeeeee", error);
452-
// }
453-
454418
const insertResult1 = await crud.insert(ContasAReceber, dados).execute().toPromise();
455419
expect(insertResult1[0].rowsAffected).to.equal(1);
456420

0 commit comments

Comments
 (0)