public async Task <CouchDbCreateDocumentResult> PostServiceMachine(MachineBody machineBody) { string database = "machines"; string id = ""; if (!string.IsNullOrEmpty(machineBody.id)) { id = machineBody.id; } else { id = Guid.NewGuid().ToString("N"); } foreach (var macUsers in machineBody.owners) { macUsers.id = Guid.NewGuid().ToString("N"); } foreach (var macApp in machineBody.applications) { macApp.id = Guid.NewGuid().ToString("N"); } CouchDbCreateDocumentResult createResponse = await _couchDbClient.CreateDocumentAsync(database, id, machineBody); return(createResponse); }
/// <summary> /// Post requested documents. /// </summary> /// <param name="database">Collection name.</param> /// <param name="documentId">Id of document to be created.</param> /// <param name="content">Content body.</param> /// <param name="cancellationToken">Cancellation token.</param> /// <returns>A response indicating whether action was successful.</returns> public async Task <CouchDbCreateDocumentResult> CreateDocumentAsync(string database, string documentId, object content, CancellationToken cancellationToken = default) { var _database = Connect(); IMongoCollection <BsonDocument> collection = _database.GetCollection <BsonDocument>(database); string contentData = Newtonsoft.Json.JsonConvert.SerializeObject(content); BsonDocument document = BsonSerializer.Deserialize <BsonDocument>(contentData); if (documentId == string.Empty) { documentId = ObjectId.GenerateNewId().ToString(); } if (!document.Contains(IdKey)) { document.Add(new BsonElement(IdKey, new BsonString(documentId))); } if (document.GetValue(IdKey).IsBsonNull) { document.Set(IdKey, new BsonString(documentId)); } if (document.Contains(RevisionKey)) { throw new SimpleHttpResponseException(HttpStatusCode.BadRequest, "Cannot assign to '_rev'"); } document.Add(new BsonElement(RevisionKey, new BsonString(InitialRevision))); try { await collection.InsertOneAsync(document); CouchDbCreateDocumentResult result = new CouchDbCreateDocumentResult { IsSuccessful = true, DocumentId = documentId, RevisionId = InitialRevision, }; return(result); } catch (MongoWriteException) { throw new SimpleHttpResponseException(HttpStatusCode.Conflict, $"{documentId} already exists!"); } catch (MongoException e) { Console.WriteLine(e.ToString()); throw new SimpleHttpResponseException(HttpStatusCode.InternalServerError, e.ToString()); } }
public async Task <CouchDbCreateDocumentResult> PostServiceApplication(ApplicationBody applicationBody) { string database = $"applications"; string id = ""; if (!string.IsNullOrEmpty(applicationBody.id)) { id = applicationBody.id; } else { id = Guid.NewGuid().ToString("N"); } CouchDbCreateDocumentResult createResponse = await _couchDbClient.CreateDocumentAsync(database, id, applicationBody); return(createResponse); }
public async Task <CouchDbCreateDocumentResult> PostServiceUser(UserBody userBody) { string database = "users"; string id = ""; if (!string.IsNullOrEmpty(userBody.id)) { id = userBody.id; } else { id = Guid.NewGuid().ToString("N"); } CouchDbCreateDocumentResult createResponse = await _couchDbClient.CreateDocumentAsync(database, id, userBody); return(createResponse); }