Skip to content

Commit

Permalink
move delete goal to another pr
Browse files Browse the repository at this point in the history
  • Loading branch information
hvn2k1 committed Jan 21, 2025
1 parent c6e41af commit 395dfdd
Show file tree
Hide file tree
Showing 10 changed files with 104 additions and 250 deletions.
3 changes: 0 additions & 3 deletions api-description/web-api.swagger.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -6253,9 +6253,6 @@ definitions:
archived:
type: boolean
description: if true, the goal will be archived
deleted:
type: boolean
description: if true, the goal will be deleted, and other fields will be ignored
required:
- id
- environmentId
Expand Down
2 changes: 1 addition & 1 deletion manifests/bucketeer/charts/web/values.yaml

Large diffs are not rendered by default.

121 changes: 43 additions & 78 deletions pkg/experiment/api/goal.go
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,6 @@ import (
pb "github.com/golang/protobuf/proto"
"go.uber.org/zap"
"google.golang.org/genproto/googleapis/rpc/errdetails"
"google.golang.org/protobuf/types/known/wrapperspb"

domainevent "github.com/bucketeer-io/bucketeer/pkg/domainevent/domain"
"github.com/bucketeer-io/bucketeer/pkg/experiment/command"
Expand Down Expand Up @@ -636,82 +635,51 @@ func (s *experimentService) updateGoalNoCommand(
return nil, dt.Err()
}
var updatedGoal *proto.Goal
if req.Deleted != nil && req.Deleted.Value {
err = s.mysqlClient.RunInTransaction(ctx, tx, func() error {
goalStorage := v2es.NewGoalStorage(tx)
goal, err := goalStorage.GetGoal(ctx, req.Id, req.EnvironmentId)
if err != nil {
return err
}
updated, err := goal.Update(nil, nil, nil, wrapperspb.Bool(true))
if err != nil {
return err
}
e, err := domainevent.NewEvent(
editor,
eventproto.Event_GOAL,
goal.Id,
eventproto.Event_GOAL_UPDATED,
&eventproto.GoalDeletedEvent{Id: goal.Id},
req.EnvironmentId,
updated.Goal,
goal.Goal,
)
if err != nil {
return err
}
if err = s.publisher.Publish(ctx, e); err != nil {
return err
}
return goalStorage.UpdateGoal(ctx, updated, req.EnvironmentId)
})
} else {
err = s.mysqlClient.RunInTransaction(ctx, tx, func() error {
goalStorage := v2es.NewGoalStorage(tx)
goal, err := goalStorage.GetGoal(ctx, req.Id, req.EnvironmentId)
if err != nil {
return err
}
updated, err := goal.Update(
req.Name,
req.Description,
req.Archived,
nil,
)
if err != nil {
return err
}
updatedGoal = updated.Goal
err = s.mysqlClient.RunInTransaction(ctx, tx, func() error {
goalStorage := v2es.NewGoalStorage(tx)
goal, err := goalStorage.GetGoal(ctx, req.Id, req.EnvironmentId)
if err != nil {
return err
}
updated, err := goal.Update(
req.Name,
req.Description,
req.Archived,
nil,
)
if err != nil {
return err
}
updatedGoal = updated.Goal

var event pb.Message
if req.Archived != nil && req.Archived.Value {
event = &eventproto.GoalArchivedEvent{Id: goal.Id}
} else {
event = &eventproto.GoalUpdatedEvent{
Id: goal.Id,
Name: req.Name,
Description: req.Description,
}
var event pb.Message
if req.Archived != nil && req.Archived.Value {
event = &eventproto.GoalArchivedEvent{Id: goal.Id}
} else {
event = &eventproto.GoalUpdatedEvent{
Id: goal.Id,
Name: req.Name,
Description: req.Description,
}
e, err := domainevent.NewEvent(
editor,
eventproto.Event_GOAL,
goal.Id,
eventproto.Event_GOAL_UPDATED,
event,
req.EnvironmentId,
updated.Goal,
goal.Goal,
)
if err != nil {
return err
}
if err = s.publisher.Publish(ctx, e); err != nil {
return err
}
return goalStorage.UpdateGoal(ctx, updated, req.EnvironmentId)
})
}
}
e, err := domainevent.NewEvent(
editor,
eventproto.Event_GOAL,
goal.Id,
eventproto.Event_GOAL_UPDATED,
event,
req.EnvironmentId,
updated.Goal,
goal.Goal,
)
if err != nil {
return err
}
if err = s.publisher.Publish(ctx, e); err != nil {
return err
}
return goalStorage.UpdateGoal(ctx, updated, req.EnvironmentId)
})
if err != nil {
if errors.Is(err, v2es.ErrGoalNotFound) || errors.Is(err, v2es.ErrGoalUnexpectedAffectedRows) {
dt, err := statusNotFound.WithDetails(&errdetails.LocalizedMessage{
Expand Down Expand Up @@ -751,9 +719,6 @@ func (s *experimentService) validateUpdateGoalNoCommandRequest(
}
return dt.Err()
}
if req.Deleted != nil && req.Deleted.Value {
return nil
}
if req.Name != nil && req.Name.Value == "" {
dt, err := statusGoalNameRequired.WithDetails(&errdetails.LocalizedMessage{
Locale: localizer.GetLocale(),
Expand Down
Binary file modified proto/experiment/proto_descriptor.pb
Binary file not shown.
129 changes: 56 additions & 73 deletions proto/experiment/service.pb.go

Large diffs are not rendered by default.

4 changes: 0 additions & 4 deletions proto/experiment/service.proto
Original file line number Diff line number Diff line change
Expand Up @@ -124,10 +124,6 @@ message UpdateGoalRequest {
[(grpc.gateway.protoc_gen_openapiv2.options.openapiv2_field) = {
description: "if true, the goal will be archived"
}];
google.protobuf.BoolValue deleted = 9 [(grpc.gateway.protoc_gen_openapiv2
.options.openapiv2_field) = {
description: "if true, the goal will be deleted, and other fields will be ignored"
}];
}

message UpdateGoalResponse {
Expand Down
16 changes: 0 additions & 16 deletions proto/proto.lock
Original file line number Diff line number Diff line change
Expand Up @@ -20966,22 +20966,6 @@
]
}
]
},
{
"id": 9,
"name": "deleted",
"type": "google.protobuf.BoolValue",
"options": [
{
"name": "(grpc.gateway.protoc_gen_openapiv2.options.openapiv2_field)",
"aggregated": [
{
"name": "description",
"value": "if true, the goal will be deleted, and other fields will be ignored"
}
]
}
]
}
],
"reserved_ids": [
Expand Down
11 changes: 4 additions & 7 deletions test/e2e/experiment/experiment_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -607,10 +607,10 @@ func TestCreateListGoalsNoCommand(t *testing.T) {
assert.Equal(t, createGoalResp.Goal.Name, pbGoal.Name)
assert.Equal(t, createGoalResp.Goal.Description, pbGoal.Description)

_, err = c.UpdateGoal(ctx, &experimentproto.UpdateGoalRequest{
_, err = c.DeleteGoal(ctx, &experimentproto.DeleteGoalRequest{
Id: goalID,
Command: &experimentproto.DeleteGoalCommand{},
EnvironmentId: *environmentID,
Deleted: wrapperspb.Bool(true),
})
if err != nil {
t.Fatal(err)
Expand Down Expand Up @@ -663,14 +663,11 @@ func TestCreateUpdateGoalNoCommand(t *testing.T) {
assert.Equal(t, expectedName, getGoalResp.Goal.Name)
assert.Equal(t, expectedDescription, getGoalResp.Goal.Description)

_, err = c.UpdateGoal(ctx, &experimentproto.UpdateGoalRequest{
_, err = c.DeleteGoal(ctx, &experimentproto.DeleteGoalRequest{
Id: goalID,
Command: &experimentproto.DeleteGoalCommand{},
EnvironmentId: *environmentID,
Deleted: wrapperspb.Bool(true),
})
if err != nil {
t.Fatal(err)
}
}

func createGoal(ctx context.Context, t *testing.T, client experimentclient.Client) string {
Expand Down
6 changes: 0 additions & 6 deletions ui/web-v2/src/proto/experiment/service_pb.d.ts
Original file line number Diff line number Diff line change
Expand Up @@ -464,11 +464,6 @@ export class UpdateGoalRequest extends jspb.Message {
getArchived(): google_protobuf_wrappers_pb.BoolValue | undefined;
setArchived(value?: google_protobuf_wrappers_pb.BoolValue): void;

hasDeleted(): boolean;
clearDeleted(): void;
getDeleted(): google_protobuf_wrappers_pb.BoolValue | undefined;
setDeleted(value?: google_protobuf_wrappers_pb.BoolValue): void;

serializeBinary(): Uint8Array;
toObject(includeInstance?: boolean): UpdateGoalRequest.AsObject;
static toObject(
Expand Down Expand Up @@ -499,7 +494,6 @@ export namespace UpdateGoalRequest {
name?: google_protobuf_wrappers_pb.StringValue.AsObject;
description?: google_protobuf_wrappers_pb.StringValue.AsObject;
archived?: google_protobuf_wrappers_pb.BoolValue.AsObject;
deleted?: google_protobuf_wrappers_pb.BoolValue.AsObject;
};
}

Expand Down
62 changes: 0 additions & 62 deletions ui/web-v2/src/proto/experiment/service_pb.js
Original file line number Diff line number Diff line change
Expand Up @@ -3122,9 +3122,6 @@ if (jspb.Message.GENERATE_TO_OBJECT) {
google_protobuf_wrappers_pb.StringValue.toObject(includeInstance, f),
archived:
(f = msg.getArchived()) &&
google_protobuf_wrappers_pb.BoolValue.toObject(includeInstance, f),
deleted:
(f = msg.getDeleted()) &&
google_protobuf_wrappers_pb.BoolValue.toObject(includeInstance, f)
};

Expand Down Expand Up @@ -3217,14 +3214,6 @@ proto.bucketeer.experiment.UpdateGoalRequest.deserializeBinaryFromReader =
);
msg.setArchived(value);
break;
case 9:
var value = new google_protobuf_wrappers_pb.BoolValue();
reader.readMessage(
value,
google_protobuf_wrappers_pb.BoolValue.deserializeBinaryFromReader
);
msg.setDeleted(value);
break;
default:
reader.skipField();
break;
Expand Down Expand Up @@ -3306,14 +3295,6 @@ proto.bucketeer.experiment.UpdateGoalRequest.serializeBinaryToWriter =
google_protobuf_wrappers_pb.BoolValue.serializeBinaryToWriter
);
}
f = message.getDeleted();
if (f != null) {
writer.writeMessage(
9,
f,
google_protobuf_wrappers_pb.BoolValue.serializeBinaryToWriter
);
}
};

/**
Expand Down Expand Up @@ -3563,49 +3544,6 @@ proto.bucketeer.experiment.UpdateGoalRequest.prototype.hasArchived =
return jspb.Message.getField(this, 8) != null;
};

/**
* optional google.protobuf.BoolValue deleted = 9;
* @return {?proto.google.protobuf.BoolValue}
*/
proto.bucketeer.experiment.UpdateGoalRequest.prototype.getDeleted =
function () {
return /** @type{?proto.google.protobuf.BoolValue} */ (
jspb.Message.getWrapperField(
this,
google_protobuf_wrappers_pb.BoolValue,
9
)
);
};

/**
* @param {?proto.google.protobuf.BoolValue|undefined} value
* @return {!proto.bucketeer.experiment.UpdateGoalRequest} returns this
*/
proto.bucketeer.experiment.UpdateGoalRequest.prototype.setDeleted = function (
value
) {
return jspb.Message.setWrapperField(this, 9, value);
};

/**
* Clears the message field making it undefined.
* @return {!proto.bucketeer.experiment.UpdateGoalRequest} returns this
*/
proto.bucketeer.experiment.UpdateGoalRequest.prototype.clearDeleted =
function () {
return this.setDeleted(undefined);
};

/**
* Returns whether this field is set.
* @return {boolean}
*/
proto.bucketeer.experiment.UpdateGoalRequest.prototype.hasDeleted =
function () {
return jspb.Message.getField(this, 9) != null;
};

if (jspb.Message.GENERATE_TO_OBJECT) {
/**
* Creates an object representation of this proto.
Expand Down

0 comments on commit 395dfdd

Please sign in to comment.