public Task Serialize(ISingleResourceDocument document, JsonWriter writer) { writer.WriteStartObject(); writer.WritePropertyName(PrimaryDataKeyName); ResourceObjectFormatter.Serialize(document.PrimaryData, writer); if (document.RelatedData != null && document.RelatedData.Any()) { writer.WritePropertyName(RelatedDataKeyName); writer.WriteStartArray(); foreach (var resourceObject in document.RelatedData) { ResourceObjectFormatter.Serialize(resourceObject, writer); } writer.WriteEndArray(); } if (document.Metadata != null) { writer.WritePropertyName(MetaKeyName); MetadataFormatter.Serialize(document.Metadata, writer); } writer.WriteEndObject(); return(Task.FromResult(0)); }
/// <summary> /// Creates a new record corresponding to the data in the request document. /// </summary> public virtual async Task <IHttpActionResult> Post(string resourceType, [FromBody] ISingleResourceDocument requestDocument, CancellationToken cancellationToken) { var materializer = _documentMaterializerLocator.GetMaterializerByResourceTypeName(resourceType); var document = await materializer.CreateRecord(requestDocument, Request, cancellationToken); return(Ok(document)); }
public Task Serialize(ISingleResourceDocument document, JsonWriter writer) { writer.WriteStartObject(); writer.WritePropertyName(PrimaryDataKeyName); _resourceObjectFormatter.Serialize(document.PrimaryData, writer); if (document.RelatedData != null && document.RelatedData.Any()) { writer.WritePropertyName(RelatedDataKeyName); writer.WriteStartArray(); foreach (var resourceObject in document.RelatedData) { _resourceObjectFormatter.Serialize(resourceObject, writer); } writer.WriteEndArray(); } if (document.Metadata != null) { writer.WritePropertyName(MetaKeyName); _metadataFormatter.Serialize(document.Metadata, writer); } writer.WriteEndObject(); return Task.FromResult(0); }
public virtual async Task <ISingleResourceDocument> UpdateRecord(string id, ISingleResourceDocument requestDocument, HttpRequestMessage request, CancellationToken cancellationToken) { var apiBaseUrl = GetBaseUrlFromRequest(request); var newRecord = await MaterializeAsync(requestDocument.PrimaryData, cancellationToken); var returnDocument = _singleResourceDocumentBuilder.BuildDocument(newRecord, apiBaseUrl, null, null); await _dbContext.SaveChangesAsync(cancellationToken); return(returnDocument); }
public virtual async Task <ISingleResourceDocument> CreateRecord(ISingleResourceDocument requestDocument, HttpRequestMessage request, CancellationToken cancellationToken) { var apiBaseUrl = GetBaseUrlFromRequest(request); var newRecord = MaterializeAsync(requestDocument.PrimaryData, cancellationToken); await OnCreate(newRecord); await DbContext.SaveChangesAsync(cancellationToken); var includes = _includeExpressionExtractor.ExtractIncludeExpressions(request); var returnDocument = _singleResourceDocumentBuilder.BuildDocument(await newRecord, apiBaseUrl, includes, null); return(returnDocument); }
public abstract Task <ISingleResourceDocument> UpdateRecord(string id, ISingleResourceDocument requestDocument, HttpRequestMessage request, CancellationToken cancellationToken);
public override Task <ISingleResourceDocument> UpdateRecord(string id, ISingleResourceDocument requestDocument, HttpRequestMessage request, CancellationToken cancellationToken) { throw new NotImplementedException(); }