package division import ( pl "simrs-vx/pkg/logger" dg "github.com/karincake/apem/db-gorm-pg" d "github.com/karincake/dodol" "gorm.io/gorm" e "simrs-vx/internal/domain/main-entities/division" esync "simrs-vx/internal/domain/sync-entities/log" //esimgos "simrs-vx/internal/domain/simgos-entities/installation" ) const source = "division" func Create(input e.CreateDto) (*d.Data, error) { //var ( // txSync = dg.I.Begin() // txSimgos = dg.IS["simrs"].Begin() //) event := pl.Event{ Feature: "Create", Source: source, } // Start log pl.SetLogInfo(&event, input, "started", "create") // STEP 1: Insert to simgos //sgData, err := CreateSimgosData(input, &event, txSimgos) //if err != nil { // return nil, err //} // //// STEP 2: Insert to Link //syncLink, err := CreateLinkData(*input.Id, sgData.Kode, &event, txSync) //if err != nil { // txSimgos.Rollback() // return nil, err //} // //// STEP 3: Commit two trx //if err = txSync.Commit().Error; err != nil { // txSync.Rollback() // txSimgos.Rollback() // return nil, err //} // //if err = txSimgos.Commit().Error; err != nil { // // STEP 4: Rollback Partial // go func() { // _ = DeleteLinkData(syncLink, &event) // }() // return nil, err //} pl.SetLogInfo(&event, nil, "complete") return &d.Data{ Meta: d.II{ "source": source, "structure": "single-data", "status": "created", }, }, nil } func CreateSimxLog(input esync.SimxLogDto) (*d.Data, error) { event := pl.Event{ Feature: "Create", Source: source, } // Start log pl.SetLogInfo(&event, input, "started", "create") err := dg.I.Transaction(func(tx *gorm.DB) error { // InsertSimxLog if err := CreateLogData(input, &event, tx); err != nil { return err } pl.SetLogInfo(&event, nil, "complete") return nil }) if err != nil { return nil, err } pl.SetLogInfo(&event, nil, "complete") return &d.Data{ Meta: d.II{ "source": source, "structure": "single-data", "status": "created", }, }, nil } func Update(input e.UpdateDto) (*d.Data, error) { //var ( // txSimgos = dg.IS["simrs"].Begin() // err error //) event := pl.Event{ Feature: "Update", Source: source, } // Start log pl.SetLogInfo(&event, input, "started", "update") //// STEP 1: Get Installation Link //syncLink, err := ReadDetailLinkData(*input.Id, &event) //if err != nil { // return nil, err //} // //// Step 2: Update Simgos //err = UpdateSimgosData(input, syncLink, &event, txSimgos) //if err != nil { // return nil, err //} // //// STEP 4: Commit two trx //if err = txSimgos.Commit().Error; err != nil { // txSimgos.Rollback() // return nil, err //} pl.SetLogInfo(&event, nil, "complete") return &d.Data{ Meta: d.IS{ "source": source, "structure": "single-data", "status": "updated", }, }, nil } func Delete(input e.DeleteDto) (*d.Data, error) { //var ( // txSync = dg.I.Begin() // txSimgos = dg.IS["simrs"].Begin() // sgData *esimgos.MPloy // err error //) event := pl.Event{ Feature: "Delete", Source: source, } // Start log pl.SetLogInfo(&event, input, "started", "delete") //// STEP 1: Get Installation Link //syncLink, err := ReadDetailLinkData(*input.Id, &event) //if err != nil { // return nil, err //} // //// STEP 2: Get Simgos //sgData, err = ReadDetailSimgosData(uint16(syncLink.Simgos_Id), &event) //if err != nil { // return nil, err //} // //// STEP 3: Delete M_Poly Simgos //err = HardDeleteSimgosData(sgData, &event, txSimgos) //if err != nil { // return nil, err //} // //// STEP 4: Delete Installation Link //err = DeleteLinkData(syncLink, &event, txSync) //if err != nil { // txSimgos.Rollback() // return nil, err //} // //// STEP 4: Commit two trx //if err = txSync.Commit().Error; err != nil { // txSync.Rollback() // txSimgos.Rollback() // return nil, err //} // //if err = txSimgos.Commit().Error; err != nil { // // STEP 5: Rollback Partial // go func() { // _, _ = CreateLinkData(uint(*input.Id), sgData.Kode, &event) // }() // return nil, err //} pl.SetLogInfo(&event, nil, "complete") return &d.Data{ Meta: d.IS{ "source": source, "structure": "single-data", "status": "deleted", }, }, nil }