Exemplo n.º 1
0
        public override Evaluant.Uss.Commands.CreateEntityCommand Visit(Evaluant.Uss.Commands.CreateEntityCommand item)
        {
            InsertMessage insert;
            IRequestMessage message;
            if (this.insert != null)
            {
                Domain.Entity e = new Evaluant.Uss.Domain.Entity(item.ParentEntity.Type);
                e.Id = item.ParentId;
                //e.AddValue("_id", item.ParentId);
                this.insert.Documents.Add(e);
                commands.Add(item.ParentEntity, this.insert);
            }
            else if (!commands.TryGetValue(item.ParentEntity, out message))
            {

                this.insert = new InsertMessage() { FullCollectionName = database + "." + item.Type };
                messages.Add(this.insert);
                message = this.insert;
                commands.Add(item.ParentEntity, message);
                insert = (InsertMessage)message;
                Domain.Entity e = new Evaluant.Uss.Domain.Entity(item.ParentEntity.Type);
                e.Id = item.ParentId;
                //e.AddValue("_id", item.ParentId);
                insert.Documents.Add(e);
            }
            else
                throw new NotSupportedException();

            return item;
        }
Exemplo n.º 2
0
        public override Evaluant.Uss.Commands.CreateReferenceCommand Visit(Evaluant.Uss.Commands.CreateReferenceCommand item)
        {
            IRequestMessage message;
            if (!commands.TryGetValue(item.ParentEntity, out message))
                throw new NotSupportedException();

            InsertMessage im = message as InsertMessage;
            if (im != null)
            {
                foreach (Domain.Entity e in im.Documents)
                {
                    ICollection<Domain.Entry> entities;
                    if (e.Id == item.ParentId)
                    {
                        Domain.Entry entry;
                        if (item.Reference.ToMany)
                        {
                            if (!e.TryGet(item.Reference.Name, out entry))
                            {
                                entry = new Domain.MultipleEntry(item.Reference.Name);
                                e.Add(entry);
                            }
                            entities = (Domain.MultipleEntry)entry;
                        }
                        else
                            entities = e;
                        Domain.Entity dbref = new Evaluant.Uss.Domain.Entity(item.ChildType);
                        dbref.Add("$ref", item.ChildType);
                        dbref.Add("$id", item.ChildId);
                        entities.Add(Domain.Entry.Create(item.Reference.Name, State.New, dbref));
                        break;
                    }
                }
            }
            return item;

        }