feat: add planning comment for handle change status from multiple tabs
parent
b57da1d21a
commit
810a1c5bf5
|
@ -15,6 +15,26 @@ export abstract class BaseBatchUpdateStatusManager<Entity> extends BaseManager {
|
||||||
abstract get entityTarget(): any;
|
abstract get entityTarget(): any;
|
||||||
|
|
||||||
setData(ids: string[], status: STATUS): void {
|
setData(ids: string[], status: STATUS): void {
|
||||||
|
/**
|
||||||
|
* // TODO: Handle case confirm multiple tabs;
|
||||||
|
* Pola ids yang dikirim dirubah menjadi data_id___updated_at
|
||||||
|
* Untuk mendapatkan value id nya saja dan menghindari breaking change
|
||||||
|
* karena sudah digunakan sebelumnya lakukan split dari data ids yang dikirim
|
||||||
|
* Example:
|
||||||
|
* this.dataIds = ids.map((i)=> {
|
||||||
|
* return i.split('___')[0]
|
||||||
|
* })
|
||||||
|
*
|
||||||
|
* Simpan data ids yang mempunyai update_at kedalam valiable baru
|
||||||
|
* Example:
|
||||||
|
* this.dataIdsWithDate = ids.map((i)=> {
|
||||||
|
* return {
|
||||||
|
* id: i.split('___')[0],
|
||||||
|
* updated_at: i.split('___')[1]
|
||||||
|
* }
|
||||||
|
* })
|
||||||
|
*/
|
||||||
|
|
||||||
this.dataIds = ids;
|
this.dataIds = ids;
|
||||||
this.dataStatus = status;
|
this.dataStatus = status;
|
||||||
}
|
}
|
||||||
|
@ -32,8 +52,21 @@ export abstract class BaseBatchUpdateStatusManager<Entity> extends BaseManager {
|
||||||
let totalSuccess = 0;
|
let totalSuccess = 0;
|
||||||
const messages = [];
|
const messages = [];
|
||||||
|
|
||||||
|
/**
|
||||||
|
* // TODO: Handle case confirm multiple tabs;
|
||||||
|
* Lopping data diambil dari dataIdsWithDate
|
||||||
|
* exp: for (const item of this.dataIdsWithDate)
|
||||||
|
*/
|
||||||
|
|
||||||
for (const id of this.dataIds) {
|
for (const id of this.dataIds) {
|
||||||
try {
|
try {
|
||||||
|
/**
|
||||||
|
* // TODO: Handle case confirm multiple tabs;
|
||||||
|
* buat variable:
|
||||||
|
* const id = item.id
|
||||||
|
* const updated_at = item.updated_at
|
||||||
|
*/
|
||||||
|
|
||||||
const entity = await this.dataService.getOneByOptions({
|
const entity = await this.dataService.getOneByOptions({
|
||||||
where: {
|
where: {
|
||||||
id: id,
|
id: id,
|
||||||
|
@ -64,6 +97,14 @@ export abstract class BaseBatchUpdateStatusManager<Entity> extends BaseManager {
|
||||||
this.tableName,
|
this.tableName,
|
||||||
).execute();
|
).execute();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* // TODO: Handle case confirm multiple tabs;
|
||||||
|
* lakukan update data dengan where condition id dan updated_at
|
||||||
|
* EXPECTATION => status akan berubah jika updated_at yang dikirim dari FE sama dengen yang di database
|
||||||
|
* IF => updated_at beda tidak perlu melakukan update status dan tidak perlu memanggil eventBus tetapi tetap dihitung sebagai aksi yang berhasil
|
||||||
|
* IF => FE tidak menambahkan updated_at makan lakukan update dan publishEvent
|
||||||
|
*/
|
||||||
|
|
||||||
const result = await this.dataService.update(
|
const result = await this.dataService.update(
|
||||||
this.queryRunner,
|
this.queryRunner,
|
||||||
this.entityTarget,
|
this.entityTarget,
|
||||||
|
|
|
@ -14,6 +14,22 @@ export abstract class BaseUpdateStatusManager<Entity> extends BaseManager {
|
||||||
abstract get entityTarget(): any;
|
abstract get entityTarget(): any;
|
||||||
|
|
||||||
setData(id: string, status: STATUS): void {
|
setData(id: string, status: STATUS): void {
|
||||||
|
/**
|
||||||
|
* // TODO: Handle case confirm multiple tabs;
|
||||||
|
* Pola id yang dikirim dirubah menjadi data_id___updated_at
|
||||||
|
* Untuk mendapatkan value id nya saja dan menghindari breaking change
|
||||||
|
* karena sudah digunakan sebelumnya lakukan split dari data ids yang dikirim
|
||||||
|
* Example:
|
||||||
|
* this.dataId = id.split('___')[0]
|
||||||
|
*
|
||||||
|
* Simpan data id yang mempunyai update_at kedalam valiable baru
|
||||||
|
* Example:
|
||||||
|
* this.dataIdsWithDate = {
|
||||||
|
* id: id.split('___')[0],
|
||||||
|
* updated_at: id.split('___')[1]
|
||||||
|
* }
|
||||||
|
*/
|
||||||
|
|
||||||
this.dataId = id;
|
this.dataId = id;
|
||||||
this.dataStatus = status;
|
this.dataStatus = status;
|
||||||
}
|
}
|
||||||
|
@ -43,6 +59,16 @@ export abstract class BaseUpdateStatusManager<Entity> extends BaseManager {
|
||||||
this.tableName,
|
this.tableName,
|
||||||
).execute();
|
).execute();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* // TODO: Handle case confirm multiple tabs;
|
||||||
|
* IF => updated_at sama dengen data yang di database
|
||||||
|
* THEN =>
|
||||||
|
* - Lakukan update data dengan where condition id dan updated_at
|
||||||
|
* - EXPECTATION = > status akan berubah jika updated_at yang dikirim dari FE sama dengen yang di database
|
||||||
|
* IF => updated_at beda maka retun curent data tanpa harus malakukan update status dan publish event
|
||||||
|
* IF => FE tidak menambahkan updated_at makan lakukan update dan publishEvent
|
||||||
|
*/
|
||||||
|
|
||||||
this.result = await this.dataService.update(
|
this.result = await this.dataService.update(
|
||||||
this.queryRunner,
|
this.queryRunner,
|
||||||
this.entityTarget,
|
this.entityTarget,
|
||||||
|
|
Loading…
Reference in New Issue