public static Task <Document> StoreDocument(this IProvider provider, Document document) { var command = new StoreDocumentCommand { Document = document, }; return(provider .ExecuteCommand(command) .ContinueWith <Document>(command.HandleResult)); }
public System.Threading.Tasks.Task <Result> Visit(StoreDocumentCommand storeDocumentCommand) { return(Task.Factory.StartNew <Result>(() => { var document = storeDocumentCommand.Document; if (document.Meta.Id == Guid.Empty) { document.Meta.Id = Guid.NewGuid(); } inMemoryProvider._docs.Add(document); return new DocumentResult(document); })); }
public virtual Task <Result> Visit(StoreDocumentCommand storeDocumentCommand) { var collectionReference = new DocumentReferencePosition { Path = "$collection", Reference = new DocumentReference { DocumentId = this.documentCollection.collectionRoot.Meta.Id, Revision = this.documentCollection.collectionRoot.Meta.RevisionEtag, } }; storeDocumentCommand.Document.References.Add(collectionReference); return(documentCollection.provider.ExecuteCommand(storeDocumentCommand)); }
public Task <Result> Visit(StoreDocumentCommand storeDocumentCommand) { var document = storeDocumentCommand.Document; if (document == null) { throw new ArgumentNullException("document"); } if (document.Content == null) { throw new ArgumentException("Document Content cannot be null", "document"); } return(Task.Factory.StartNew <Result>(() => { var xmlElm = (XElement)document.Content.ToXNode(); xmlElm.Add(new XAttribute(XNamespace.Xmlns.GetName("jxml"), JsonXml.JsonXmlSettings.JXmlNamespace), new XAttribute(XNamespace.Xmlns.GetName("jsonx"), JsonXml.JsonXmlSettings.JsonNetXmlNamespace)); using (var conn = new SqlConnection(_connectionString)) using (var cmd = new SqlCommand()) { conn.Open(); cmd.Connection = conn; cmd.CommandType = System.Data.CommandType.StoredProcedure; cmd.CommandText = "dbo.StoreDocument"; if (document.Meta != null) { cmd.Parameters.Add(new SqlParameter("DocumentId", document.Meta.Id)); cmd.Parameters.Add(new SqlParameter("FriendlyId", document.Meta.Name)); cmd.Parameters.Add(new SqlParameter("RevisionEtag", document.Meta.RevisionEtag)); } var xmlContent = new SqlXml(xmlElm.CreateReader()); cmd.Parameters.AddWithValue("Content", xmlContent); using (var sqlReader = cmd.ExecuteReader()) { return MapRecord(sqlReader); } } })); }