예제 #1
0
        private bool RecoverOnReleaseCreated(ReleaseCreated releaseCreated)
        {
            if (!Context.Child(releaseCreated.ReleaseId).IsNobody())
            {
                return(false);
            }
            var state = GenerateState(releaseCreated);

            PlaceChildActor(state);
            return(true);
        }
예제 #2
0
 private ReleaseState GenerateState(ReleaseCreated evt)
 {
     return(new ReleaseState
            (
                evt.ReleaseId,
                evt.Artist,
                evt.Title,
                evt.Genre,
                evt.OwnerId,
                evt.Cover
            ));
 }
예제 #3
0
        private bool HandleCreateMessage(ReleaseCreated releaseCreatedEvent)
        {
            if (!IsMessageValid(releaseCreatedEvent))
            {
                return(false);
            }

            PersistAsync(releaseCreatedEvent, (evt) =>
            {
                var state = GenerateState(evt);
                var child = PlaceChildActor(state);
            });
            return(true);
        }
예제 #4
0
        public string CreateRelease(ReleaseCreateCommand createRelease)
        {
            WithValidation(() => CommandValidator.Validate(createRelease));
            var releaseId      = Guid.NewGuid().ToString();
            var releaseCreated = new ReleaseCreated
            {
                ReleaseId = releaseId,
                Artist    = createRelease.Artist,
                Cover     = createRelease.Cover,
                Genre     = createRelease.Genre,
                OwnerId   = createRelease.OwnerId,
                Timestamp = createRelease.Timestamp,
                Title     = createRelease.Title
            };

            ActorModel.Tell(ActorModel.ReleasePapaPath, releaseCreated);
            return(releaseId);
        }
예제 #5
0
 private bool IsMessageValid(ReleaseCreated cmd)
 {
     return(cmd != null && !string.IsNullOrEmpty(cmd.Artist) &&
            !string.IsNullOrEmpty(cmd.Genre) &&
            !string.IsNullOrEmpty(cmd.Title));
 }