feat(12.1-01): list row states from one controller call per page
- pact.ListRowStates with the fixed RowState set deleted, negative, disabled - list response meta.row_states keyed by row id; unknown values dropped - list messages rowStateDeleted, rowStateNegative, rowStateDisabled - update writes through the scope the load used, so a soft-deleted record a controller includes stays soft-deleted - DataTable row state badges and text styles - roster fixture, smoke tests, OpenAPI, TS types, dist, READMEs, docs
This commit is contained in:
@@ -420,6 +420,30 @@ type ListExtendQuery interface {
|
||||
ListExtendQuery(ctx context.Context, db *gorm.DB) *gorm.DB
|
||||
}
|
||||
|
||||
// RowState is one state an admin list row may carry. The set is fixed; the
|
||||
// admin shows each state as a text badge and a row text style.
|
||||
type RowState string
|
||||
|
||||
// The row states the admin understands.
|
||||
const (
|
||||
// RowStateDeleted marks a soft-deleted record.
|
||||
RowStateDeleted RowState = "deleted"
|
||||
// RowStateNegative marks a record in a blocked or otherwise negative state.
|
||||
RowStateNegative RowState = "negative"
|
||||
// RowStateDisabled marks an inactive record.
|
||||
RowStateDisabled RowState = "disabled"
|
||||
)
|
||||
|
||||
// ListRowStates optionally marks the rows of an admin list with states. The
|
||||
// framework calls it once per list page with the page's records, in page
|
||||
// order, and the list's database handle: a list does not run in a
|
||||
// transaction, so cabana.TxFromContext reports none here. The result is
|
||||
// index-aligned with records; a row may carry several states and a nil entry
|
||||
// means none. Values outside the three RowState constants are dropped.
|
||||
type ListRowStates interface {
|
||||
ListRowStates(ctx context.Context, db *gorm.DB, records []any) ([][]RowState, error)
|
||||
}
|
||||
|
||||
// ListRelationColumnMapper maps a source-schema relation column onto the
|
||||
// physical column exposed by the related Go model. It supports legacy admin
|
||||
// schemas whose public field names no longer match the database schema.
|
||||
|
||||
Reference in New Issue
Block a user