public void TestBsonDocumentEmptyGuid() { _collection.RemoveAll(); var document = new BsonDocument { { "_id", Guid.Empty }, { "A", 1 } }; _collection.Save(document); Assert.AreEqual(2, document.ElementCount); Assert.AreEqual("_id", document.GetElement(0).Name); Assert.IsInstanceOf <BsonBinaryData>(document["_id"]); Assert.AreNotEqual(BsonBinaryData.Create(Guid.Empty), document["_id"]); Assert.AreEqual(1, _collection.Count()); var id = document["_id"].AsGuid; document["A"] = 2; _collection.Save(document); Assert.AreEqual(id, document["_id"].AsGuid); Assert.AreEqual(1, _collection.Count()); document = _collection.FindOneAs <BsonDocument>(); Assert.AreEqual(2, document.ElementCount); Assert.AreEqual(id, document["_id"].AsGuid); Assert.AreEqual(2, document["A"].AsInt32); }
internal Cursor(ChannelsPool channelPool, BsonDocument filter, CollectionNamespace collectionNamespace, Guid sessionId) { _channelPool = channelPool; _filter = filter; _collectionNamespace = collectionNamespace; _sessionId = new BsonDocument("id", BsonBinaryData.Create(sessionId)); }
public async Task DeleteAsync(Guid teamId, Guid ticketId, Guid id) { var update = Builders <Team> .Update.PullFilter(p => p.Tickets[FilteredElementIndex].Comments, f => f.Id.Equals(id)); var filter = Builders <Team> .Filter.Eq("Tickets.Comments._id", BsonBinaryData.Create(id)); await Context.GetCollection <Team>().FindOneAndUpdateAsync(filter, update); }
public async Task RemoveAsync(Guid ticketId, Guid watcherId) { var update = Builders <Team> .Update.PullFilter(p => p.Tickets.ElementAt(-1).Watchers, f => f.Id.Equals(watcherId)); var filter = Builders <Team> .Filter.Eq("Tickets.Watchers._id", BsonBinaryData.Create(watcherId)); await _context.GetCollection <Team>().FindOneAndUpdateAsync(filter, update); }
/// <summary> /// /// </summary> /// <param name="value"></param> /// <returns></returns> public static BsonValue ByteArray(object value) { byte[] val = (byte[])value; if (val == null) { return(BsonNull.Value); } return(BsonBinaryData.Create((byte[])value)); }
public async Task <Guid> CreateAsync(Guid teamId, Guid ticketId, Comment item) { item.Id = Guid.NewGuid(); var filter = Builders <Team> .Filter.Eq("Tickets._id", BsonBinaryData.Create(ticketId)); var update = Builders <Team> .Update.Push(t => t.Tickets[FilteredElementIndex].Comments, item); await Context.GetCollection <Team>().UpdateOneAsync(filter, update); return(item.Id); }
public async Task <Guid> CreateAsync(Guid teamId, Ticket item) { item.Id = Guid.NewGuid(); item.Comments = new List <Comment>(); var filter = Builders <Team> .Filter.Eq("_id", BsonBinaryData.Create(teamId)); var update = Builders <Team> .Update.Push(t => t.Tickets, item); await _context.GetCollection <Team>().UpdateOneAsync(filter, update); return(item.Id); }
public async Task <Guid> AddAsync(Guid ticketId, User watcher) { var filter = Builders <Team> .Filter .Eq("Tickets._id", BsonBinaryData.Create(ticketId)); var update = Builders <Team> .Update .Push(t => t.Tickets.ElementAt(FiltredElementIndex).Watchers, watcher); await _context.GetCollection <Team>().UpdateOneAsync(filter, update); return(watcher.Id); }
public async Task GuidSerializationDeserialization() { var guid = Guid.NewGuid(); var doc = new BsonDocument { { "guid", BsonBinaryData.Create(guid) } }; var result = await RoundTripAsync(doc, new BsonDocumentSerializer()); Assert.Equal(doc, result); }
public async Task <Ticket> GetAsync(Guid teamId, Guid id) { var filter = Builders <Team> .Filter.Eq("_id", BsonBinaryData.Create(teamId)); var teams = await _context.GetCollection <Team>() .Find(filter) .Project <Team>(Builders <Team> .Projection.Include(t => t.Tickets)) .ToListAsync(); var team = teams.FirstOrDefault(); return(team?.Tickets?.FirstOrDefault(ticket => ticket.Id == id)); }
public async Task <IEnumerable <Ticket> > GetAll(Guid teamId) { var filter = Builders <Team> .Filter.Eq("_id", BsonBinaryData.Create(teamId)); var teams = await _context.GetCollection <Team>() .Find(filter) .Project <Team>(Builders <Team> .Projection.Include(t => t.Tickets)) .ToListAsync(); var team = teams.FirstOrDefault(); return(team == null ? new List <Ticket>() : team.Tickets); }
public async Task <User> GetAsync(Guid teamId, Guid ticketId, Guid watcherId) { var filter = Builders <Team> .Filter.Eq("Tickets.Watchers._id", BsonBinaryData.Create(watcherId)); var teams = await _context.GetCollection <Team>() .Find(filter) .Project <Team>(Builders <Team> .Projection.Include(t => t.Tickets)) .ToListAsync(); var team = teams.FirstOrDefault(); var watchers = team?.Tickets?.FirstOrDefault(t => t.Id == ticketId)?.Watchers ?? new List <User>(); return(watchers.FirstOrDefault(user => user.Id.Equals(watcherId))); }
public async Task <IEnumerable <Comment> > GetAllAsync(Guid teamId, Guid ticketId) { var filter = Builders <Team> .Filter.Eq("_id", BsonBinaryData.Create(teamId)); var teams = await Context.GetCollection <Team>() .Find(filter) .Project <Team>(Builders <Team> .Projection.Include(t => t.Tickets)) .ToListAsync(); var team = teams.FirstOrDefault(); var result = team?.Tickets?.FirstOrDefault(t => t.Id == ticketId)?.Comments ?? new List <Comment>(); return(result); }
public void TestBsonDocumentWithBsonBinaryDataId() { _collection.RemoveAll(); var doc = new BsonDocument { { "_id", BsonBinaryData.Create(new byte[] { }) }, { "X", 1 } }; _collection.Insert(doc); doc = new BsonDocument { { "_id", BsonBinaryData.Create(new byte[] { 1, 2, 3 }) }, { "X", 1 } }; _collection.Insert(doc); }
public async Task <IEnumerable <Ticket> > FindAsync(Guid teamId, Expression <Func <Ticket, bool> > expression) { var filter = Builders <Team> .Filter.Eq("_id", BsonBinaryData.Create(teamId)); var teams = await _context.GetCollection <Team>() .Find(filter) .Project <Team>(Builders <Team> .Projection.Include(t => t.Tickets)) .ToListAsync(); var team = teams.FirstOrDefault(); var tickets = team == null ? new List <Ticket>() : team.Tickets.Where(expression.Compile()); return(tickets); }
private BsonValue GetValue(object value) { if (value is DBNull || value == null) { return(BsonNull.Value); } else if (value is string) { return(BsonString.Create(value)); } else if (value is bool) { return(BsonBoolean.Create(value)); } else if (value is int || value is short || value is byte) { return(BsonInt32.Create(value)); } else if (value is long) { return(BsonInt64.Create(value)); } else if (value is decimal) { return(BsonDecimal128.Create(value)); } else if (value is double || value is float) { return(BsonDouble.Create(value)); } else if (value is DateTime) { return(BsonDateTime.Create(value)); } else if (value is char c) { return(BsonString.Create("" + c)); } else if (value is byte[]) { return(BsonBinaryData.Create(value)); } else { return(BsonString.Create(value.ToString())); } }
public async Task SendAsync(string destinationQueueName, Message message) { if (destinationQueueName == null) { throw new ArgumentNullException(nameof(destinationQueueName)); } if (message == null) { throw new ArgumentNullException(nameof(message)); } if (!message.Headers.TryGetValue(Fields.MessageId, out var id)) { id = Guid.NewGuid().ToString(); message.Headers[Fields.MessageId] = id; } var headers = BsonArray.Create(message.Headers .Select(kvp => new BsonDocument { { Fields.Key, kvp.Key }, { Fields.Value, kvp.Value } })); await _semaphore.WaitAsync(); try { await _config.Collection.InsertOneAsync(new BsonDocument { { "_id", id }, { Fields.DestinationQueueName, destinationQueueName }, { Fields.SendTime, DateTime.UtcNow }, { Fields.DeliveryAttempts, 0 }, { Fields.ReceiveTime, DateTime.MinValue }, { Fields.Headers, headers }, { Fields.Body, BsonBinaryData.Create(message.Body) } }); } catch (MongoWriteException exception) when(exception.WriteError.Category == ServerErrorCategory.DuplicateKey) { throw new UniqueMessageIdViolationException(id); } finally { _semaphore.Release(); } }
public async Task <Guid> UpdateAsync(Guid teamId, Ticket item) { var filter = Builders <Team> .Filter.Eq("Tickets._id", BsonBinaryData.Create(item.Id)); var update = Builders <Team> .Update .Set(x => x.Tickets[FilteredElementIndex].Name, item.Name) .Set(x => x.Tickets[FilteredElementIndex].Text, item.Text) .Set(x => x.Tickets[FilteredElementIndex].Tags, item.Tags) .Set(x => x.Tickets[FilteredElementIndex].Priority, item.Priority) .Set(x => x.Tickets[FilteredElementIndex].Status, item.Status) .Set(x => x.Tickets[FilteredElementIndex].Assignee, item.Assignee) .Set(x => x.Tickets[FilteredElementIndex].CreationDate, item.CreationDate) .Set(x => x.Tickets[FilteredElementIndex].LinkedTicketIds, item.LinkedTicketIds); await _context.GetCollection <Team>().UpdateOneAsync(filter, update); return(item.Id); }
public void TestClastWithBsonBinaryDataId() { _collection.RemoveAll(); var doc = new ClassWithBsonBinaryDataId { Id = null, X = 1 }; _collection.Insert(doc); doc = new ClassWithBsonBinaryDataId { Id = BsonBinaryData.Create(new byte[] { }), X = 1 }; _collection.Insert(doc); doc = new ClassWithBsonBinaryDataId { Id = BsonBinaryData.Create(new byte[] { 1, 2, 3 }), X = 1 }; _collection.Insert(doc); }
// public methods /// <summary> /// Generates an Id for a document. /// </summary> /// <param name="container">The container of the document (will be a MongoCollection when called from the C# driver). </param> /// <param name="document">The document.</param> /// <returns>An Id.</returns> public object GenerateId(object container, object document) { return(BsonBinaryData.Create(Guid.NewGuid(), _guidRepresentation)); }
public void TestCreateNull() { object obj = null; Assert.Throws <ArgumentNullException>(() => { BsonBinaryData.Create(obj); }); }
public void TestClassWithBsonValueId() { // repeats all tee TestClassWithBsonXyzId tests using ClassWithBsonValueId { // same as TestClassWithBonArrayId _collection.RemoveAll(); var doc = new ClassWithBsonValueId { Id = null, X = 1 }; _collection.Insert(doc); doc = new ClassWithBsonValueId { Id = new BsonArray(), X = 1 }; Assert.Throws <MongoSafeModeException>(() => { _collection.Insert(doc); }); doc = new ClassWithBsonValueId { Id = new BsonArray { 1, 2, 3 }, X = 1 }; Assert.Throws <MongoSafeModeException>(() => { _collection.Insert(doc); }); } { // same as TestClastWithBsonBinaryDataId _collection.RemoveAll(); var doc = new ClassWithBsonValueId { Id = null, X = 1 }; _collection.Insert(doc); doc = new ClassWithBsonValueId { Id = BsonBinaryData.Create(new byte[] { }), X = 1 }; _collection.Insert(doc); doc = new ClassWithBsonValueId { Id = BsonBinaryData.Create(new byte[] { 1, 2, 3 }), X = 1 }; _collection.Insert(doc); } { // same as TestClassWithBsonBooleanId _collection.RemoveAll(); var doc = new ClassWithBsonValueId { Id = null, X = 1 }; _collection.Insert(doc); doc = new ClassWithBsonValueId { Id = BsonBoolean.Create(false), X = 1 }; _collection.Insert(doc); doc = new ClassWithBsonValueId { Id = BsonBoolean.Create(true), X = 1 }; _collection.Insert(doc); } { // same as TestClassWithBsonDocumentId _collection.RemoveAll(); var doc = new ClassWithBsonValueId { Id = null, X = 1 }; _collection.Insert(doc); doc = new ClassWithBsonValueId { Id = new BsonDocument(), X = 1 }; _collection.Insert(doc); doc = new ClassWithBsonValueId { Id = new BsonDocument { { "A", 1 }, { "B", 2 } }, X = 3 }; _collection.Insert(doc); } { // same as TestClassWithBsonDateTimeId _collection.RemoveAll(); var doc = new ClassWithBsonValueId { Id = null, X = 1 }; _collection.Insert(doc); doc = new ClassWithBsonValueId { Id = BsonDateTime.Create(DateTime.MinValue), X = 1 }; _collection.Insert(doc); doc = new ClassWithBsonValueId { Id = BsonDateTime.Create(DateTime.UtcNow), X = 1 }; _collection.Insert(doc); doc = new ClassWithBsonValueId { Id = BsonDateTime.Create(DateTime.MaxValue), X = 1 }; _collection.Insert(doc); } { // same as TestClassWithBsonDoubleId _collection.RemoveAll(); var doc = new ClassWithBsonValueId { Id = null, X = 1 }; _collection.Insert(doc); doc = new ClassWithBsonValueId { Id = BsonDouble.Create(0.0), X = 1 }; _collection.Insert(doc); doc = new ClassWithBsonValueId { Id = BsonDouble.Create(1.0), X = 1 }; _collection.Insert(doc); } { // same as TestClassWithBsonInt32Id _collection.RemoveAll(); var doc = new ClassWithBsonValueId { Id = null, X = 1 }; _collection.Insert(doc); doc = new ClassWithBsonValueId { Id = BsonInt32.Create(0), X = 1 }; _collection.Insert(doc); doc = new ClassWithBsonValueId { Id = BsonInt32.Create(1), X = 1 }; _collection.Insert(doc); } { // same as TestClassWithBsonInt64Id _collection.RemoveAll(); var doc = new ClassWithBsonValueId { Id = null, X = 1 }; _collection.Insert(doc); doc = new ClassWithBsonValueId { Id = BsonInt64.Create(0), X = 1 }; _collection.Insert(doc); doc = new ClassWithBsonValueId { Id = BsonInt64.Create(1), X = 1 }; _collection.Insert(doc); } { // same as TestClassWithBsonMaxKeyId _collection.RemoveAll(); var doc = new ClassWithBsonValueId { Id = null, X = 1 }; _collection.Insert(doc); Assert.AreEqual(null, doc.Id); doc = new ClassWithBsonValueId { Id = BsonMaxKey.Value, X = 1 }; _collection.Insert(doc); } { // same as TestClassWithBsonMinKeyId _collection.RemoveAll(); var doc = new ClassWithBsonValueId { Id = null, X = 1 }; _collection.Insert(doc); Assert.AreEqual(null, doc.Id); doc = new ClassWithBsonValueId { Id = BsonMinKey.Value, X = 1 }; _collection.Insert(doc); } { // same as TestClassWithBsonNullId _collection.RemoveAll(); var doc = new ClassWithBsonValueId { Id = null, X = 1 }; _collection.Insert(doc); Assert.AreEqual(null, doc.Id); doc = new ClassWithBsonValueId { Id = BsonNull.Value, X = 1 }; Assert.Throws <MongoSafeModeException>(() => { _collection.Insert(doc); }); } { // same as TestClassWithBsonObjectId _collection.RemoveAll(); var doc = new ClassWithBsonValueId { Id = null, X = 1 }; _collection.Insert(doc); Assert.IsNull(doc.Id); // BsonObjectIdGenerator is not invoked when nominalType is BsonValue doc = new ClassWithBsonValueId { Id = BsonObjectId.Empty, X = 1 }; _collection.Insert(doc); Assert.AreEqual(ObjectId.Empty, doc.Id.AsObjectId); // BsonObjectIdGenerator is not invoked when nominalType is BsonValue doc = new ClassWithBsonValueId { Id = BsonObjectId.GenerateNewId(), X = 1 }; _collection.Insert(doc); } { // same as TestClassWithBsonStringId _collection.RemoveAll(); var doc = new ClassWithBsonValueId { Id = null, X = 1 }; _collection.Insert(doc); Assert.IsNull(doc.Id); doc = new ClassWithBsonValueId { Id = "", X = 1 }; _collection.Insert(doc); Assert.AreEqual("", doc.Id.AsString); doc = new ClassWithBsonValueId { Id = "123", X = 1 }; _collection.Insert(doc); } { // same as TestClassWithBsonTimestampId _collection.RemoveAll(); var doc = new ClassWithBsonValueId { Id = null, X = 1 }; _collection.Insert(doc); Assert.IsNull(doc.Id); doc = new ClassWithBsonValueId { Id = BsonTimestamp.Create(0, 0), X = 1 }; _collection.Insert(doc); Assert.AreEqual(BsonTimestamp.Create(0, 0), doc.Id); doc = new ClassWithBsonValueId { Id = BsonTimestamp.Create(1, 2), X = 1 }; _collection.Insert(doc); } }
public static BsonValue Create(this BsonType bsonType, object o) { BsonValue value = BsonNull.Value; try { switch (bsonType) { case BsonType.EndOfDocument: break; case BsonType.Double: value = BsonDouble.Create(o); break; case BsonType.String: value = BsonString.Create(o); break; case BsonType.Document: value = BsonDocument.Create(o); break; case BsonType.Array: value = BsonArray.Create(o); break; case BsonType.Binary: value = BsonBinaryData.Create(o); break; case BsonType.Undefined: break; case BsonType.ObjectId: value = BsonObjectId.Create(o); break; case BsonType.Boolean: value = BsonBoolean.Create(o); break; case BsonType.DateTime: value = BsonDateTime.Create(o); break; case BsonType.Null: value = BsonNull.Value; break; case BsonType.RegularExpression: value = BsonRegularExpression.Create(o); break; case BsonType.JavaScript: value = BsonJavaScript.Create(o); break; case BsonType.Symbol: value = BsonSymbol.Create(o); break; case BsonType.JavaScriptWithScope: value = BsonJavaScriptWithScope.Create(o); break; case BsonType.Int32: value = BsonInt32.Create(o); break; case BsonType.Timestamp: value = BsonTimestamp.Create(o); break; case BsonType.Int64: value = BsonInt64.Create(o); break; case BsonType.MaxKey: value = BsonValue.Create(o); break; case BsonType.MinKey: value = BsonValue.Create(o); break; } } catch { } return(value); }