moonstream/probes/pkg/engine/engine.go

45 wiersze
1.4 KiB
Go

package engine
import (
"context"
"fmt"
"log"
"time"
"github.com/jackc/pgx/v5/pgxpool"
probes "github.com/moonstream-to/api/probes/pkg"
)
var ENGINE_SUPPORTED_WORKERS = map[string]probes.ApplicationProbe{"engine-clean-call-requests": {
Name: "clean-call-requests",
Description: "Clean all inactive call requests from database",
LonDescription: "Remove records in call_requests database table with ttl value greater then now.",
ExecFunction: CleanCallRequestsExec,
}}
type CallRequest struct {
Id string `json:"id"`
RegisteredContractIid string `json:"registered_contract_id"`
Caller string `json:"caller"`
MoonstreamUserId string `json:"moonstream_user_id"`
Method string `json:"method"`
Parameters interface{} `json:"parameters"`
ExpiresAt time.Time `json:"expires_at"`
CreatedAt time.Time `json:"created_at"`
UpdatedAt time.Time `json:"updated_at"`
}
func CleanCallRequestsExec(ctx context.Context, dbPool *pgxpool.Pool) error {
tag, err := dbPool.Exec(
ctx,
"DELETE FROM call_requests WHERE expires_at <= NOW() - INTERVAL '1 minute';",
)
if err != nil {
return fmt.Errorf("delete execution failed, err: %v", err)
}
log.Printf("[engine] [clean-call-requests] - Deleted %d call requests", tag.RowsAffected())
return nil
}