func (o *Remove) ExecutedAt() *time.Ticket {
	return o.executedAt
}
ExecutedAt returns execution time of this operation.
package operation
import (
	"github.com/yorkie-team/yorkie/pkg/document/json"
	"github.com/yorkie-team/yorkie/pkg/document/time"
)
type Remove struct {
	parentCreatedAt *time.Ticket
	createdAt *time.Ticket
	executedAt *time.Ticket
}
func NewRemove(
	parentCreatedAt *time.Ticket,
	createdAt *time.Ticket,
	executedAt *time.Ticket,
) *Remove {
	return &Remove{
		parentCreatedAt: parentCreatedAt,
		createdAt:       createdAt,
		executedAt:      executedAt,
	}
}
func (o *Remove) Execute(root *json.Root) error {
	parentElem := root.FindByCreatedAt(o.parentCreatedAt)
	switch parent := parentElem.(type) {
	case json.Container:
		elem := parent.DeleteByCreatedAt(o.createdAt, o.executedAt)
		if elem != nil {
			root.RegisterRemovedElementPair(parent, elem)
		}
	default:
		return ErrNotApplicableDataType
	}
	return nil
}
func (o *Remove) ParentCreatedAt() *time.Ticket {
	return o.parentCreatedAt
}