Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion api/api_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -107,7 +107,7 @@ func setupMockSchedule() schedule.Handler {
m := new(schedule.MockSchedule)
m.On("CreateHandler", mock.Anything, mock.Anything, mock.Anything, mock.Anything).
Return(&model.Schedule{}, nil)
m.On("ListHandler", mock.Anything, mock.Anything).
m.On("ListHandler", mock.Anything, mock.Anything, mock.Anything).
Return([]model.Schedule{{}}, nil)
m.On("PauseHandler", mock.Anything, mock.Anything, uint32(1)).
Return(&model.Schedule{}, nil)
Expand Down
35 changes: 35 additions & 0 deletions client/swagger/http/deal_schedule/list_schedules_parameters.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

11 changes: 10 additions & 1 deletion cmd/deal/schedule/list.go
Original file line number Diff line number Diff line change
Expand Up @@ -11,13 +11,22 @@ import (
var ListCmd = &cli.Command{
Name: "list",
Usage: "List all deal making schedules",
Flags: []cli.Flag{
&cli.StringFlag{
Name: "group",
Category: "Filtering",
Usage: "Filter schedules by group label",
},
},
Action: func(c *cli.Context) error {
db, closer, err := database.OpenFromCLI(c)
if err != nil {
return errors.WithStack(err)
}
defer closer.Close()
schedules, err := schedule.Default.ListHandler(c.Context, db)
schedules, err := schedule.Default.ListHandler(c.Context, db, schedule.ListRequest{
Group: c.String("group"),
})
if err != nil {
return errors.WithStack(err)
}
Expand Down
2 changes: 1 addition & 1 deletion cmd/schedule_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -88,7 +88,7 @@ func TestScheduleListHandler(t *testing.T) {
defer runner.Save(t)
mockHandler := new(schedule.MockSchedule)
defer swapScheduleHandler(mockHandler)()
mockHandler.On("ListHandler", mock.Anything, mock.Anything).Return([]model.Schedule{testSchedule}, nil)
mockHandler.On("ListHandler", mock.Anything, mock.Anything, mock.Anything).Return([]model.Schedule{testSchedule}, nil)
_, _, err := runner.Run(ctx, "singularity deal schedule list")
require.NoError(t, err)

Expand Down
5 changes: 5 additions & 0 deletions docs/en/cli-reference/deal/schedule/list.md

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

8 changes: 8 additions & 0 deletions docs/swagger/docs.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

8 changes: 8 additions & 0 deletions docs/swagger/swagger.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

5 changes: 5 additions & 0 deletions docs/swagger/swagger.yaml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

5 changes: 3 additions & 2 deletions handler/deal/schedule/interface.go
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,7 @@ type Handler interface {
ListHandler(
ctx context.Context,
db *gorm.DB,
request ListRequest,
) ([]model.Schedule, error)
PauseHandler(
ctx context.Context,
Expand Down Expand Up @@ -69,8 +70,8 @@ func (m *MockSchedule) CreateHandler(ctx context.Context, db *gorm.DB, lotusClie
return args.Get(0).(*model.Schedule), args.Error(1)
}

func (m *MockSchedule) ListHandler(ctx context.Context, db *gorm.DB) ([]model.Schedule, error) {
args := m.Called(ctx, db)
func (m *MockSchedule) ListHandler(ctx context.Context, db *gorm.DB, request ListRequest) ([]model.Schedule, error) {
args := m.Called(ctx, db, request)
return args.Get(0).([]model.Schedule), args.Error(1)
}

Expand Down
20 changes: 11 additions & 9 deletions handler/deal/schedule/list.go
Original file line number Diff line number Diff line change
Expand Up @@ -8,30 +8,32 @@ import (
"gorm.io/gorm"
)

// ListRequest holds optional filters for listing schedules.
type ListRequest struct {
Group string `json:"group"` // Filter by group label (empty = all)
}

// @ID ListSchedules
// @Summary List all deal making schedules
// @Tags Deal Schedule
// @Produce json
// @Param group query string false "Filter by group label"
// @Success 200 {array} model.Schedule
// @Failure 400 {object} api.HTTPError
// @Failure 500 {object} api.HTTPError
// @Router /schedule [get]
func _() {}

// 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.
// ListHandler retrieves schedules from the database, optionally filtered by group.
func (DefaultHandler) ListHandler(
ctx context.Context,
db *gorm.DB,
request ListRequest,
) ([]model.Schedule, error) {
db = db.WithContext(ctx)
if request.Group != "" {
db = db.Where(&model.Schedule{Group: request.Group})
}
var schedules []model.Schedule
err := db.Find(&schedules).Error
if err != nil {
Expand Down
13 changes: 12 additions & 1 deletion handler/deal/schedule/list_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -22,8 +22,19 @@ func TestListHandler(t *testing.T) {
PreparationID: 1,
}).Error
require.NoError(t, err)
schedules, err := Default.ListHandler(ctx, db)
schedules, err := Default.ListHandler(ctx, db, ListRequest{})
require.NoError(t, err)
require.Len(t, schedules, 1)

// Test filtering by group
err = db.Model(&model.Schedule{}).Where("id = ?", 1).UpdateColumn("group", "test-group").Error
require.NoError(t, err)
filtered, err := Default.ListHandler(ctx, db, ListRequest{Group: "test-group"})
require.NoError(t, err)
require.Len(t, filtered, 1)

empty, err := Default.ListHandler(ctx, db, ListRequest{Group: "nonexistent"})
require.NoError(t, err)
require.Len(t, empty, 0)
})
}
Loading