Skip to content

Commit 1eb9486

Browse files
author
fernandocode
committed
0.4.0-alpha.2
Transaction Manager
1 parent fded8f8 commit 1eb9486

File tree

12 files changed

+534
-154
lines changed

12 files changed

+534
-154
lines changed

package-lock.json

Lines changed: 382 additions & 98 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -23,9 +23,9 @@
2323
"@angular/platform-browser-dynamic": "~7.2.0",
2424
"@angular/router": "~7.2.0",
2525
"core-js": "^2.5.4",
26-
"database-builder": "^0.5.0-alpha.8",
26+
"database-builder": "^0.5.0-alpha.15",
2727
"moment": "^2.22.0",
28-
"rxjs": "6.4.0",
28+
"rxjs": "^6.5.3",
2929
"tslib": "^1.10.0",
3030
"zone.js": "~0.8.26"
3131
},

projects/ionic-database-builder/package.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "ionic-database-builder",
3-
"version": "0.4.0-alpha.1",
3+
"version": "0.4.0-alpha.2",
44
"description": "Extended library from database-builder to assist in creating and maintaining SQL commands. Allowing integrate execute commands with SQLite ('@ionic-native/sqlite'), Web Sql, etc. Through the interface injection 'DatabaseCreatorContract' returning an implementation of 'DatabaseObject'.",
55
"repository": {
66
"type": "git",
@@ -36,6 +36,6 @@
3636
"peerDependencies": {
3737
"@angular/common": "^7.2.0",
3838
"@angular/core": "^7.2.0",
39-
"database-builder": "^0.3.10"
39+
"database-builder": "^0.5.0-alpha.15"
4040
}
4141
}

projects/ionic-database-builder/src/lib/defaults/database-settings-factory-default.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import { GetMapper } from 'database-builder';
22
import { Injector, Injectable } from '@angular/core';
33
import { DatabaseSettingsModel } from '../model/database-settings-model';
4-
import { DatabaseSettingsFactoryContract } from 'ionic-database-builder';
4+
import { DatabaseSettingsFactoryContract } from '../utils/database-settings-factory-contract';
55

66
@Injectable()
77
export class DatabaseSettingsFactoryDefault extends DatabaseSettingsFactoryContract {

projects/ionic-database-builder/src/lib/services/database-migration.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ export class DatabaseMigration extends DatabaseMigrationBase implements Database
3232
const mappers = this._settings.mapper(this._injector);
3333

3434
// remove dados offline da versão anterior, pois o formato dos dados foi alterado de uma versão para a outra
35-
const ddl = new Ddl(database, mappers, true);
35+
const ddl = new Ddl({ database, getMapper: mappers, enableLog: true });
3636
mappers.forEachMapper((value, key) => {
3737
if (!value.readOnly) {
3838
observablesWait.push(ddl.drop(value.newable).execute());

projects/ionic-database-builder/src/lib/utils/buildable-database-manager.ts

Lines changed: 23 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,18 @@ export abstract class BuildableDatabaseManager extends DatabaseManager {
3030
return database;
3131
}
3232

33+
public managedTransaction(): Observable<ManagedTransaction> {
34+
return from(this.databaseInstance()).pipe(mergeMap(database => {
35+
if (!database.managedTransaction) {
36+
throw new DatabaseBuilderError('Managed Transaction not supported in current middleware!');
37+
}
38+
return of(database.managedTransaction());
39+
}));
40+
}
41+
42+
/**
43+
* @deprecated Use managedTransaction()
44+
*/
3345
public newTransaction(successTransaction: () => void): Observable<DatabaseBaseTransaction> {
3446
return new Observable((observer: Observer<DatabaseBaseTransaction>) => {
3547
this.databaseInstance()
@@ -53,23 +65,14 @@ export abstract class BuildableDatabaseManager extends DatabaseManager {
5365
});
5466
}
5567

56-
public managedTransaction(): Observable<ManagedTransaction> {
57-
return from(this.databaseInstance()).pipe(mergeMap(database => {
58-
if (!database.managedTransaction) {
59-
throw new DatabaseBuilderError('Managed Transaction not supported in current middleware!');
60-
}
61-
return of(database.managedTransaction());
62-
}));
63-
}
64-
6568
/**
6669
* @deprecated Use managedTransaction()
6770
*/
6871
public transaction(successTransaction: () => void): Observable<Crud> {
6972
return new Observable((observer: Observer<Crud>) => {
7073
this.newTransaction(successTransaction)
7174
.subscribe((transaction) => {
72-
observer.next(new Crud(transaction, this._mapper, this.enableLog));
75+
observer.next(new Crud({ database: transaction, getMapper: this._mapper, enableLog: this.enableLog }));
7376
observer.complete();
7477
}, error => {
7578
observer.error(error);
@@ -136,7 +139,7 @@ export abstract class BuildableDatabaseManager extends DatabaseManager {
136139
return new Observable((observer: Observer<Crud>) => {
137140
this.databaseInstance()
138141
.then(database => {
139-
observer.next(new Crud(database, this._mapper, this.enableLog));
142+
observer.next(new Crud({ database, getMapper: this._mapper, enableLog: this.enableLog }));
140143
observer.complete();
141144
})
142145
.catch(error => { observer.error(error); observer.complete(); });
@@ -172,10 +175,15 @@ export abstract class BuildableDatabaseManager extends DatabaseManager {
172175
this.databaseInstance()
173176
.then(database => {
174177
const that = this;
175-
observer.next(new Query(typeT, alias,
176-
(tKey: (new () => any) | string) => {
178+
observer.next(new Query(typeT, {
179+
alias,
180+
getMapper: (tKey: (new () => any) | string) => {
177181
return that._mapper.get(tKey);
178-
}, this._mapper.get(typeT).mapperTable, database, this.enableLog));
182+
},
183+
mapperTable: this._mapper.get(typeT).mapperTable,
184+
database,
185+
enableLog: this.enableLog
186+
}));
179187
observer.complete();
180188
})
181189
.catch(error => {
@@ -189,7 +197,7 @@ export abstract class BuildableDatabaseManager extends DatabaseManager {
189197
return new Observable((observer: Observer<Ddl>) => {
190198
this.databaseInstance()
191199
.then(database => {
192-
observer.next(new Ddl(database, this._mapper, this.enableLog));
200+
observer.next(new Ddl({ database, getMapper: this._mapper, enableLog: this.enableLog }));
193201
observer.complete();
194202
})
195203
.catch(error => {

projects/ionic-database-builder/src/lib/utils/database-migration-base.ts

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,3 @@
1-
21
import * as momentNs from 'moment';
32
const moment = momentNs;
43
import { DatabaseObject } from 'database-builder';

src/app/cidade.spec.ts

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,7 @@ describe('Cidade', () => {
4545

4646
const cidade: Cidade = new Cidade();
4747
cidade.nome = 'Cidade Test';
48-
const insertResult = await crud.insert(Cidade, cidade).execute().toPromise();
48+
const insertResult = await crud.insert(Cidade, { modelToSave: cidade }).execute().toPromise();
4949
expect(insertResult[0].insertId).toBeGreaterThan(0);
5050
expect(insertResult[0].rowsAffected).toEqual(1);
5151
});
@@ -59,12 +59,12 @@ describe('Cidade', () => {
5959

6060
const cidade: Cidade = new Cidade();
6161
cidade.nome = 'Cidade Test';
62-
const insertResult = await crud.insert(Cidade, cidade).execute().toPromise();
62+
const insertResult = await crud.insert(Cidade, { modelToSave: cidade }).execute().toPromise();
6363
expect(insertResult[0].insertId).toBeGreaterThan(0);
6464
expect(insertResult[0].rowsAffected).toEqual(1);
6565

6666
cidade.nome = 'Nova Cidade';
67-
const updateResult = await crud.update(Cidade, cidade)
67+
const updateResult = await crud.update(Cidade, { modelToSave: cidade })
6868
.where(where => where.equal(x => x.codeImport, cidade.codeImport))
6969
.execute().toPromise();
7070
expect(updateResult[0].rowsAffected).toEqual(1);
@@ -79,13 +79,13 @@ describe('Cidade', () => {
7979

8080
const cidade: Cidade = new Cidade();
8181
cidade.nome = 'Cidade Test';
82-
const result = await crud.insert(Cidade, cidade).execute().toPromise();
82+
const result = await crud.insert(Cidade, { modelToSave: cidade }).execute().toPromise();
8383
expect(result[0].insertId).toBeGreaterThan(0);
8484
expect(result[0].rowsAffected).toEqual(1);
8585

8686
cidade.nome = 'Nova Cidade';
8787
cidade.uf = void 0;
88-
const updateResult = await crud.update(Cidade, cidade)
88+
const updateResult = await crud.update(Cidade, { modelToSave: cidade })
8989
.where(where => where.equal(x => x.codeImport, cidade.codeImport))
9090
.execute().toPromise();
9191
expect(updateResult[0].rowsAffected).toEqual(1);

src/app/managed-transaction.spec.ts

Lines changed: 22 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,7 @@ describe('ManagedTransaction', () => {
5858

5959
const cidade: Cidade = new Cidade();
6060
cidade.nome = 'Cidade Test';
61-
const insertResult = await crud.insert(Cidade, cidade).execute().toPromise();
61+
const insertResult = await crud.insert(Cidade, { modelToSave: cidade }).execute().toPromise();
6262
expect(insertResult[0].insertId).toBeGreaterThan(0);
6363
expect(insertResult[0].rowsAffected).toEqual(1);
6464
});
@@ -72,7 +72,7 @@ describe('ManagedTransaction', () => {
7272

7373
const obj1 = Object.assign({}, guidClazz);
7474
transaction.add(
75-
crud.insert(GuidClazz, obj1)
75+
crud.insert(GuidClazz, { modelToSave: obj1 })
7676
);
7777

7878
const modelUpdate = {
@@ -81,19 +81,19 @@ describe('ManagedTransaction', () => {
8181
} as GuidClazz;
8282
transaction.add(
8383
crud
84-
.update(GuidClazz, modelUpdate)
84+
.update(GuidClazz, { modelToSave: modelUpdate })
8585
.where(where => where.equal(x => x.guid, obj1.guid))
8686
);
8787

8888
const modelUpdateByDescription = new GuidClazz(void 0, 'Teste teste test');
8989
transaction.add(
9090
crud
91-
.update(GuidClazz, modelUpdateByDescription)
91+
.update(GuidClazz, { modelToSave: modelUpdateByDescription })
9292
.where(where => where.equal(x => x.description, modelUpdate.description))
9393
);
9494

9595
try {
96-
const resultTransaction = await transaction.commit();
96+
const resultTransaction = await transaction.commit().toPromise();
9797
expect(resultTransaction).toEqual(true);
9898
} catch (error) {
9999
console.error(error);
@@ -115,10 +115,10 @@ describe('ManagedTransaction', () => {
115115
const obj1 = Object.assign({}, guidClazz);
116116
transaction.add(
117117
crud
118-
.insert(GuidClazz, obj1)
118+
.insert(GuidClazz, { modelToSave: obj1 })
119119
);
120120

121-
const resultTransaction = await transaction.commit();
121+
const resultTransaction = await transaction.commit().toPromise();
122122
expect(resultTransaction).toEqual(true);
123123

124124
const queryUpdateResult = await crud.query(GuidClazz).toList().toPromise();
@@ -141,15 +141,15 @@ describe('ManagedTransaction', () => {
141141
expect(obj1.guid).toBeUndefined();
142142

143143
transaction.add(
144-
crud.insert(GuidClazz, obj1)
144+
crud.insert(GuidClazz, { modelToSave: obj1 })
145145
);
146146

147147
expect(obj1.guid.length).toEqual(36);
148148

149-
const resultTransaction = await transaction.commit();
149+
const resultTransaction = await transaction.commit().toPromise();
150150
expect(resultTransaction).toEqual(true);
151151

152-
const queryUpdateResult = await crud.query(GuidClazz).firstOrDefault(where => where.equal(x => x.guid, obj1.guid)).toPromise();
152+
const queryUpdateResult = await crud.query(GuidClazz).firstOrDefault({ where: where => where.equal(x => x.guid, obj1.guid) }).toPromise();
153153
expect(queryUpdateResult.description).toEqual(obj1.description);
154154
expect(queryUpdateResult.guid).toEqual(obj1.guid);
155155
});
@@ -165,28 +165,28 @@ describe('ManagedTransaction', () => {
165165

166166
transaction.add(
167167
crud
168-
.insert(GuidClazz, obj1)
168+
.insert(GuidClazz, { modelToSave: obj1 })
169169
);
170170
// script with error, table not exist
171171
transaction.add(
172172
crud
173-
.update(GuidClazz, guidClazz)
173+
.update(GuidClazz, { modelToSave: guidClazz })
174174
.columns(columns => columns.setValue('abc', 1))
175175
);
176176

177177
const obj2 = Object.assign({}, guidClazz);
178178

179179
transaction.add(
180180
crud
181-
.insert(GuidClazz, obj2)
181+
.insert(GuidClazz, { modelToSave: obj2 })
182182
);
183183
try {
184-
await transaction.commit();
184+
await transaction.commit().toPromise();
185185
} catch (error) {
186186
expect(error.SYNTAX_ERR).toEqual(error.code);
187187
expect(obj1.guid.length).toEqual(36);
188188

189-
const queryUpdateResult = await crud.query(GuidClazz).firstOrDefault(where => where.equal(x => x.guid, obj1.guid)).toPromise();
189+
const queryUpdateResult = await crud.query(GuidClazz).firstOrDefault({ where: where => where.equal(x => x.guid, obj1.guid) }).toPromise();
190190
expect(queryUpdateResult).toBeUndefined();
191191

192192
const resultRollback = await transaction.rollback();
@@ -207,19 +207,19 @@ describe('ManagedTransaction', () => {
207207

208208
transaction.add(
209209
crud
210-
.insert(GuidClazz, obj1)
210+
.insert(GuidClazz, { modelToSave: obj1 })
211211
);
212212

213213
const obj2 = Object.assign({}, guidClazz);
214214

215215
transaction.add(
216216
crud
217-
.insert(GuidClazz, obj2)
217+
.insert(GuidClazz, { modelToSave: obj2 })
218218
);
219219
const resultRollback = await transaction.rollback();
220220
expect(resultRollback).toEqual(true);
221221

222-
const queryUpdateResult2 = await crud.query(GuidClazz).firstOrDefault(where => where.equal(x => x.guid, obj1.guid)).toPromise();
222+
const queryUpdateResult2 = await crud.query(GuidClazz).firstOrDefault({ where: where => where.equal(x => x.guid, obj1.guid) }).toPromise();
223223

224224
expect(queryUpdateResult2).toBeUndefined();
225225
});
@@ -240,7 +240,7 @@ describe('ManagedTransaction', () => {
240240
const obj1 = Object.assign({}, guidClazz);
241241
transaction.add(
242242
crud
243-
.insert(GuidClazz, obj1)
243+
.insert(GuidClazz, { modelToSave: obj1 })
244244
);
245245
transaction.add(
246246
crud
@@ -253,18 +253,18 @@ describe('ManagedTransaction', () => {
253253
} as GuidClazz;
254254
transaction.add(
255255
crud
256-
.update(GuidClazz, modelUpdate)
256+
.update(GuidClazz, { modelToSave: modelUpdate })
257257
.where(where => where.equal(x => x.guid, obj1.guid))
258258
);
259259

260260
const modelUpdateByDescription = new GuidClazz(void 0, 'Teste teste test');
261261
transaction.add(
262262
crud
263-
.update(GuidClazz, modelUpdateByDescription)
263+
.update(GuidClazz, { modelToSave: modelUpdateByDescription })
264264
.where(where => where.equal(x => x.description, modelUpdate.description))
265265
);
266266

267-
const resultTransaction = await transaction.commit();
267+
const resultTransaction = await transaction.commit().toPromise();
268268
expect(resultTransaction).toEqual(true);
269269
});
270270

src/app/simple.spec.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -67,7 +67,7 @@ describe('Simple Test injector component', () => {
6767

6868
await crud.delete(Cliente).execute().toPromise();
6969

70-
const insert = crud.insert(Cliente, clienteToSave);
70+
const insert = crud.insert(Cliente, { modelToSave: clienteToSave });
7171
const result = insert.compile();
7272
expect(result[0].params.toString()).toEqual([
7373
clienteToSave.codeImport, clienteToSave.razaoSocial, clienteToSave.apelido,
@@ -92,7 +92,7 @@ describe('Simple Test injector component', () => {
9292
};
9393
const crud = await database.beginTransaction().toPromise();
9494
try {
95-
const result = crud.insert(Cliente, clienteToSave).compile();
95+
const result = crud.insert(Cliente, { modelToSave: clienteToSave }).compile();
9696
expect(result[0].params.toString()).toEqual([
9797
clienteToSave.codeImport, clienteToSave.razaoSocial, clienteToSave.apelido,
9898
clienteToSave.desativo, clienteToSave.cidade.codeImport, clienteToSave.classificacao.codeImport

0 commit comments

Comments
 (0)