Documentation
¶
Index ¶
- type CreateRequest
- type DefaultHandler
- func (DefaultHandler) CreateHandler(ctx context.Context, db *gorm.DB, lotusClient jsonrpc.RPCClient, ...) (*model.Schedule, error)
- func (DefaultHandler) ListHandler(ctx context.Context, db *gorm.DB) ([]model.Schedule, error)
- func (DefaultHandler) PauseHandler(ctx context.Context, db *gorm.DB, scheduleID uint32) (*model.Schedule, error)
- func (DefaultHandler) ResumeHandler(ctx context.Context, db *gorm.DB, scheduleID uint32) (*model.Schedule, error)
- type Handler
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type CreateRequest ¶
type CreateRequest struct {
Preparation string `json:"preparation" validation:"required"` // Preparation ID or name
Provider string `json:"provider" validation:"required"` // Provider
HTTPHeaders []string `json:"httpHeaders"` // http headers to be passed with the request (i.e. key=value)
URLTemplate string `json:"urlTemplate"` // URL template with PIECE_CID placeholder for boost to fetch the CAR file, i.e. http://127.0.0.1/piece/{PIECE_CID}.car
PricePerGBEpoch float64 `default:"0" json:"pricePerGbEpoch"` // Price in FIL per GiB per epoch
PricePerGB float64 `default:"0" json:"pricePerGb"` // Price in FIL per GiB
PricePerDeal float64 `default:"0" json:"pricePerDeal"` // Price in FIL per deal
Verified bool `default:"true" json:"verified"` // Whether the deal should be verified
IPNI bool `default:"true" json:"ipni"` // Whether the deal should be IPNI
KeepUnsealed bool `default:"true" json:"keepUnsealed"` // Whether the deal should be kept unsealed
StartDelay string `default:"72h" json:"startDelay"` // Deal start delay in epoch or in duration format, i.e. 1000, 72h
Duration string `default:"12840h" json:"duration"` // Duration in epoch or in duration format, i.e. 1500000, 2400h
ScheduleCron string `json:"scheduleCron"` // Schedule cron patter
ScheduleCronPerpetual bool `json:"scheduleCronPerpetual"` // Whether a cron schedule should run in definitely
ScheduleDealNumber int `json:"scheduleDealNumber"` // Number of deals per scheduled time
TotalDealNumber int `json:"totalDealNumber"` // Total number of deals
ScheduleDealSize string `json:"scheduleDealSize"` // Size of deals per schedule trigger in human readable format, i.e. 100 TiB
TotalDealSize string `json:"totalDealSize"` // Total size of deals in human readable format, i.e. 100 TiB
Notes string `json:"notes"` // Notes
MaxPendingDealSize string `json:"maxPendingDealSize"` // Max pending deal size in human readable format, i.e. 100 TiB
MaxPendingDealNumber int `json:"maxPendingDealNumber"` // Max pending deal number
//nolint:tagliatelle
AllowedPieceCIDs []string `json:"allowedPieceCids"` // Allowed piece CIDs in this schedule
}
type DefaultHandler ¶ added in v0.4.0
type DefaultHandler struct{}
func (DefaultHandler) CreateHandler ¶ added in v0.4.0
func (DefaultHandler) CreateHandler( ctx context.Context, db *gorm.DB, lotusClient jsonrpc.RPCClient, request CreateRequest, ) (*model.Schedule, error)
CreateHandler creates a new schedule based on the provided CreateRequest.
The function performs the following steps:
- Associates the provided context with the database connection.
- Retrieves the preparation from the database using the ID from the request.
- Parses the provided start delay and duration to ensure valid durations.
- If a ScheduleCron string is provided, it validates its correctness.
- Parses and validates the provided sizes: TotalDealSize, ScheduleDealSize, and MaxPendingDealSize.
- Verifies all provided piece CIDs in AllowedPieceCIDs to ensure their correctness.
- Checks for the presence of wallets attached to the preparation.
- Uses the lotusClient to retrieve the provider actor.
- Constructs a new model.Schedule instance from the provided and parsed data.
- Inserts the newly created schedule into the database.
- Returns the newly created schedule.
Parameters: - ctx: The context for the operation, used for timeouts and cancellation. - db: The database connection, used for CRUD operations related to schedules. - lotusClient: The Lotus client, used for Filecoin RPC calls. - request: The request object containing the data for the new schedule.
Returns: - A pointer to the created model.Schedule if successful. - An error indicating the reason for any failure during the operation.
func (DefaultHandler) ListHandler ¶ added in v0.4.0
ListHandler retrieves all the schedules from the database.
Parameters: - ctx: The context for the operation, which can include cancellation signals, timeout details, etc. - db: The database connection used for CRUD operations.
Returns: - A slice of Schedule models if successful. - An error if there are issues during the operation.
func (DefaultHandler) PauseHandler ¶ added in v0.4.0
func (DefaultHandler) PauseHandler( ctx context.Context, db *gorm.DB, scheduleID uint32, ) (*model.Schedule, error)
PauseHandler attempts to pause an active schedule based on the provided scheduleID. If the schedule is already completed, an error will be returned.
Parameters: - ctx: The context for the operation, which can include cancellation signals, timeout details, etc. - db: The database connection used for CRUD operations. - scheduleID: The ID of the schedule to be paused.
Returns: - A pointer to the updated Schedule if successful. - An error if there are issues during the operation, e.g., if the schedule is not found or already completed.
func (DefaultHandler) ResumeHandler ¶ added in v0.4.0
func (DefaultHandler) ResumeHandler( ctx context.Context, db *gorm.DB, scheduleID uint32, ) (*model.Schedule, error)
ResumeHandler attempts to resume a previously paused schedule based on the provided scheduleID.
Parameters: - ctx: The context for the operation, allowing for cancellation and timeouts. - db: The database connection used for operations. - scheduleID: The ID of the schedule to be resumed.
Returns: - A pointer to the updated Schedule if successful. - An error if any issues occur, e.g., if the schedule is not found or not in a paused state.
type Handler ¶ added in v0.4.0
type Handler interface {
CreateHandler(
ctx context.Context,
db *gorm.DB,
lotusClient jsonrpc.RPCClient,
request CreateRequest,
) (*model.Schedule, error)
ListHandler(
ctx context.Context,
db *gorm.DB,
) ([]model.Schedule, error)
PauseHandler(
ctx context.Context,
db *gorm.DB,
scheduleID uint32,
) (*model.Schedule, error)
ResumeHandler(
ctx context.Context,
db *gorm.DB,
scheduleID uint32,
) (*model.Schedule, error)
}
var Default Handler = &DefaultHandler{}