/
meta_transaction_api.go
48 lines (40 loc) · 1.27 KB
/
meta_transaction_api.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
package rpc
import (
"context"
"fmt"
"github.com/DIMO-Network/meta-transaction-processor/internal/config"
"github.com/DIMO-Network/meta-transaction-processor/internal/models"
pb "github.com/DIMO-Network/meta-transaction-processor/pkg/grpc"
"github.com/DIMO-Network/shared/db"
"github.com/rs/zerolog"
"github.com/volatiletech/sqlboiler/v4/queries/qm"
"google.golang.org/protobuf/types/known/emptypb"
)
type MetaTransactionService struct {
pb.MetaTransactionServiceServer
Settings *config.Settings
logger *zerolog.Logger
dbs db.Store
}
func NewMetaTransactionService(settings *config.Settings, logger *zerolog.Logger, dbs db.Store) *MetaTransactionService {
return &MetaTransactionService{
Settings: settings,
logger: logger,
dbs: dbs,
}
}
func (m *MetaTransactionService) CleanStuckMetaTransactions(ctx context.Context, in *emptypb.Empty) (*pb.CleanStuckMetaTransactionsResponse, error) {
activeTx, err := models.MetaTransactionRequests(
qm.OrderBy(fmt.Sprintf("%s ASC", models.MetaTransactionRequestColumns.CreatedAt)),
).One(ctx, m.dbs.DBS().Reader)
if err != nil {
return nil, err
}
_, err = activeTx.Delete(ctx, m.dbs.DBS().Writer)
if err != nil {
return nil, err
}
return &pb.CleanStuckMetaTransactionsResponse{
Id: activeTx.ID,
}, nil
}