check / check (push) Successful in 4m25s
Brings `prod`, which upaas deploys, up to `main` at `9cf9cdd`, the merge of #321. `prod` was cut from `main` at `251cb3d` (1.0.0b1). What it deploys is everything listed in #321. For running it: - With `WEBHOOKER_ENVIRONMENT` unset, the instance runs as `prod` and sends no `Access-Control-Allow-Origin: *`. - Each event database gains its new indexes the first time it is opened after the upgrade. - `webhooker_delivery_retries_total` no longer counts a circuit breaker holding back a delivery that is already `retrying`. Not in this PR yet: #340, in which the container sets its own data directory owner and mode before start. It is in progress on `next`. Once it reaches `main`, this PR carries it, because the PR follows `main`. Model: opus-5-5 Co-authored-by: Jeffrey Paul <1+sneak@noreply.example.org> Reviewed-on: #343 Co-authored-by: clawbot <35+clawbot@noreply.example.org>
29 lines
1.2 KiB
Go
29 lines
1.2 KiB
Go
package database
|
|
|
|
import "gorm.io/gorm"
|
|
|
|
// DeliveryResult represents the result of a delivery attempt
|
|
//
|
|
//nolint:lll // a struct tag cannot wrap
|
|
type DeliveryResult struct {
|
|
BaseModel
|
|
|
|
// DeliveryID and DeletedAt make up one index, in that order.
|
|
// DeletedAt repeats the BaseModel field only to join it: GORM adds
|
|
// "deleted_at IS NULL" to almost every query, and where a column is
|
|
// matched against several values SQLite otherwise reads through the
|
|
// deleted_at index, which every live row matches.
|
|
DeliveryID string `gorm:"type:uuid;not null;index:idx_delivery_results_delivery_id,priority:1" json:"deliveryId"`
|
|
DeletedAt gorm.DeletedAt `gorm:"index:idx_delivery_results_delivery_id,priority:2" json:"deletedAt,omitzero"`
|
|
|
|
AttemptNum int `gorm:"not null" json:"attemptNum"`
|
|
Success bool `json:"success"`
|
|
StatusCode int `json:"statusCode,omitempty"`
|
|
ResponseBody string `gorm:"type:text" json:"responseBody,omitempty"`
|
|
Error string `json:"error,omitempty"`
|
|
Duration int64 `json:"durationMs"` // Duration in milliseconds
|
|
|
|
// Relations
|
|
Delivery Delivery `json:"delivery,omitzero"`
|
|
}
|