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;
|
||||
|
||||
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.dataStatus = status;
|
||||
}
|
||||
|
@ -32,8 +52,21 @@ export abstract class BaseBatchUpdateStatusManager<Entity> extends BaseManager {
|
|||
let totalSuccess = 0;
|
||||
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) {
|
||||
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({
|
||||
where: {
|
||||
id: id,
|
||||
|
@ -64,6 +97,14 @@ export abstract class BaseBatchUpdateStatusManager<Entity> extends BaseManager {
|
|||
this.tableName,
|
||||
).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(
|
||||
this.queryRunner,
|
||||
this.entityTarget,
|
||||
|
|
|
@ -14,6 +14,22 @@ export abstract class BaseUpdateStatusManager<Entity> extends BaseManager {
|
|||
abstract get entityTarget(): any;
|
||||
|
||||
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.dataStatus = status;
|
||||
}
|
||||
|
@ -43,6 +59,16 @@ export abstract class BaseUpdateStatusManager<Entity> extends BaseManager {
|
|||
this.tableName,
|
||||
).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.queryRunner,
|
||||
this.entityTarget,
|
||||
|
|
Loading…
Reference in New Issue