Use transactions to set the communication status changes
Not doing it yet, but soon we'll do log entries for them.
This commit is contained in:
parent
040ab106b4
commit
a95e44cf42
8 changed files with 67 additions and 20 deletions
|
|
@ -2,9 +2,12 @@ package platform
|
|||
|
||||
import (
|
||||
"context"
|
||||
"fmt"
|
||||
|
||||
"github.com/Gleipnir-Technology/nidus-sync/db"
|
||||
"github.com/Gleipnir-Technology/nidus-sync/db/gen/nidus-sync/public/model"
|
||||
querypublic "github.com/Gleipnir-Technology/nidus-sync/db/query/public"
|
||||
"github.com/Gleipnir-Technology/nidus-sync/lint"
|
||||
)
|
||||
|
||||
func CommunicationsForOrganization(ctx context.Context, org_id int64) ([]*model.Communication, error) {
|
||||
|
|
@ -21,14 +24,30 @@ func CommunicationFromID(ctx context.Context, user User, comm_id int64) (*model.
|
|||
return comm, nil
|
||||
}
|
||||
func CommunicationMarkInvalid(ctx context.Context, user User, comm_id int64) error {
|
||||
return querypublic.CommunicationMarkInvalid(ctx, int64(user.Organization.ID), int64(user.ID), comm_id)
|
||||
return communicationMark(ctx, user, comm_id, querypublic.CommunicationMarkInvalid)
|
||||
}
|
||||
func CommunicationMarkPendingResponse(ctx context.Context, user User, comm_id int64) error {
|
||||
return querypublic.CommunicationMarkPendingResponse(ctx, int64(user.Organization.ID), int64(user.ID), comm_id)
|
||||
return communicationMark(ctx, user, comm_id, querypublic.CommunicationMarkPendingResponse)
|
||||
}
|
||||
func CommunicationMarkPossibleIssue(ctx context.Context, user User, comm_id int64) error {
|
||||
return querypublic.CommunicationMarkPossibleIssue(ctx, int64(user.Organization.ID), int64(user.ID), comm_id)
|
||||
return communicationMark(ctx, user, comm_id, querypublic.CommunicationMarkPossibleIssue)
|
||||
}
|
||||
func CommunicationMarkPossibleResolved(ctx context.Context, user User, comm_id int64) error {
|
||||
return querypublic.CommunicationMarkPossibleResolved(ctx, int64(user.Organization.ID), int64(user.ID), comm_id)
|
||||
return communicationMark(ctx, user, comm_id, querypublic.CommunicationMarkPossibleResolved)
|
||||
}
|
||||
|
||||
type markFunc = func(context.Context, db.Tx, int64, int64, int64) error
|
||||
|
||||
func communicationMark(ctx context.Context, user User, comm_id int64, f markFunc) error {
|
||||
txn, err := db.BeginTxn(ctx)
|
||||
if err != nil {
|
||||
return fmt.Errorf("begin txn: %w", err)
|
||||
}
|
||||
defer lint.LogOnErrRollback(txn.Rollback, ctx, "rollback")
|
||||
err = f(ctx, txn, int64(user.Organization.ID), int64(user.ID), comm_id)
|
||||
if err != nil {
|
||||
return fmt.Errorf("mark: %w", err)
|
||||
}
|
||||
txn.Commit(ctx)
|
||||
return nil
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue