mirror of
https://github.com/coder/coder.git
synced 2026-09-24 15:04:27 +08:00
feat: support "me" with shared_with_user filter (#26494)
This commit is contained in:
@@ -218,7 +218,7 @@ func Members(query string, organizationID uuid.UUID) (database.OrganizationMembe
|
||||
return params, parser.Errors
|
||||
}
|
||||
|
||||
func Workspaces(ctx context.Context, db database.Store, query string, page codersdk.Pagination, agentInactiveDisconnectTimeout time.Duration) (database.GetWorkspacesParams, []codersdk.ValidationError) {
|
||||
func Workspaces(ctx context.Context, db database.Store, query string, page codersdk.Pagination, agentInactiveDisconnectTimeout time.Duration, actorID uuid.UUID) (database.GetWorkspacesParams, []codersdk.ValidationError) {
|
||||
filter := database.GetWorkspacesParams{
|
||||
AgentInactiveDisconnectTimeoutSeconds: int64(agentInactiveDisconnectTimeout.Seconds()),
|
||||
|
||||
@@ -274,8 +274,7 @@ func Workspaces(ctx context.Context, db database.Store, query string, page coder
|
||||
filter.HasExternalAgent = parser.NullableBoolean(values, sql.NullBool{}, "has_external_agent")
|
||||
filter.OrganizationID = parseOrganization(ctx, db, parser, values, "organization")
|
||||
filter.Shared = parser.NullableBoolean(values, sql.NullBool{}, "shared")
|
||||
// TODO: support "me" by passing in the actorID
|
||||
filter.SharedWithUserID = parseUser(ctx, db, parser, values, "shared_with_user", uuid.Nil)
|
||||
filter.SharedWithUserID = parseUser(ctx, db, parser, values, "shared_with_user", actorID)
|
||||
filter.SharedWithGroupID = parseGroup(ctx, db, parser, values, "shared_with_group")
|
||||
// Translate healthy filter to has-agent statuses
|
||||
// healthy:true = connected, healthy:false = disconnected or timeout
|
||||
|
||||
@@ -27,6 +27,7 @@ func TestSearchWorkspace(t *testing.T) {
|
||||
Expected database.GetWorkspacesParams
|
||||
ExpectedErrorContains string
|
||||
Setup func(t *testing.T, db database.Store)
|
||||
ActorID uuid.UUID
|
||||
}{
|
||||
{
|
||||
Name: "Empty",
|
||||
@@ -340,6 +341,19 @@ func TestSearchWorkspace(t *testing.T) {
|
||||
HasAgentStatuses: []string{"connecting", "connected"},
|
||||
},
|
||||
},
|
||||
{
|
||||
Name: "SharedWithMe",
|
||||
Query: `shared_with_user:me`,
|
||||
Setup: func(t *testing.T, db database.Store) {
|
||||
dbgen.User(t, db, database.User{
|
||||
ID: uuid.MustParse("3dd8b1b8-dff5-4b22-8ae9-c243ca136ecf"),
|
||||
})
|
||||
},
|
||||
Expected: database.GetWorkspacesParams{
|
||||
SharedWithUserID: uuid.MustParse("3dd8b1b8-dff5-4b22-8ae9-c243ca136ecf"),
|
||||
},
|
||||
ActorID: uuid.MustParse("3dd8b1b8-dff5-4b22-8ae9-c243ca136ecf"),
|
||||
},
|
||||
{
|
||||
Name: "SharedWithUser",
|
||||
Query: `shared_with_user:3dd8b1b8-dff5-4b22-8ae9-c243ca136ecf`,
|
||||
@@ -485,7 +499,7 @@ func TestSearchWorkspace(t *testing.T) {
|
||||
if c.Setup != nil {
|
||||
c.Setup(t, db)
|
||||
}
|
||||
values, errs := searchquery.Workspaces(context.Background(), db, c.Query, codersdk.Pagination{}, 0)
|
||||
values, errs := searchquery.Workspaces(context.Background(), db, c.Query, codersdk.Pagination{}, 0, c.ActorID)
|
||||
if c.ExpectedErrorContains != "" {
|
||||
assert.True(t, len(errs) > 0, "expect some errors")
|
||||
var s strings.Builder
|
||||
@@ -517,7 +531,7 @@ func TestSearchWorkspace(t *testing.T) {
|
||||
query := ``
|
||||
timeout := 1337 * time.Second
|
||||
db, _ := dbtestutil.NewDB(t)
|
||||
values, errs := searchquery.Workspaces(context.Background(), db, query, codersdk.Pagination{}, timeout)
|
||||
values, errs := searchquery.Workspaces(context.Background(), db, query, codersdk.Pagination{}, timeout, uuid.Nil)
|
||||
require.Empty(t, errs)
|
||||
require.Equal(t, int64(timeout.Seconds()), values.AgentInactiveDisconnectTimeoutSeconds)
|
||||
})
|
||||
|
||||
Reference in New Issue
Block a user