Beispiel #1
0
        /// <summary>
        /// Creates new or replaces existing AQL user function with specified name and code.
        /// </summary>
        public AResult <bool> Register(string name, string code)
        {
            var request      = new Request(HttpMethod.POST, ApiBaseUri.AqlFunction, "");
            var bodyDocument = new Dictionary <string, object>();

            // required
            bodyDocument.String(ParameterName.Name, name);
            // required
            bodyDocument.String(ParameterName.Code, code);
            // optional
            Request.TrySetBodyParameter(ParameterName.IsDeterministic, _parameters, bodyDocument);

            request.Body = JSON.ToJSON(bodyDocument, ASettings.JsonParameters);

            var response = _connection.Send(request);
            var result   = new AResult <bool>(response);

            switch (response.StatusCode)
            {
            case 200:
            case 201:
                result.Success = true;
                result.Value   = true;
                break;

            case 400:
            default:
                // Arango error
                break;
            }

            _parameters.Clear();

            return(result);
        }
Beispiel #2
0
        private static CommandMetadata ReadCommand(Dictionary <string, object> dict)
        {
            var met = new CommandMetadata
            {
                Key      = (Identifier)dict.String("key"),
                Mode     = (Identifier)dict.String("mode"),
                Alias    = dict.String("alias"),
                Title    = dict.String("title"),
                Shortcut = dict.String("shortcut")
            };

            var obj = dict.Object("arguments") as List <object>;

            if (obj != null)
            {
                foreach (var a in obj)
                {
                    var d = a as Dictionary <string, object>;
                    if (d != null)
                    {
                        met.Arguments.Add(ReadArgument(d));
                    }
                }
            }

            return(met);
        }
Beispiel #3
0
        /// <summary>
        /// Determines type of the index.
        /// </summary>
        public AIndex Type(AIndexType value)
        {
            // needs to be string value
            _parameters.String(ParameterName.Type, value.ToString().ToLower());

            return(this);
        }
Beispiel #4
0
        public static void GeneralUsage()
        {
            var document = new Dictionary <string, object>()
                           .String("foo", "foo string value")
                           .Int("bar", 12345)
                           .String("embedded.foo", "embedded foo string value");

            // document object would look in JSON representation as follows:
            // {
            //     "foo": "foo string value",
            //     "bar": 12345,
            //     "embedded": {
            //         "foo": "embedded foo string value"
            //      }
            // }

            if (document.IsString("foo") && document.IsInt("bar") && document.IsString("embedded.foo"))
            {
                var foo         = document.String("foo");
                var bar         = document.Int("bar");
                var embeddedFoo = document.String("embedded.foo");

                Console.WriteLine("{0}, {1}, {2}", foo, bar, embeddedFoo);
            }
        }
Beispiel #5
0
        public static void NestedSetGetOperations()
        {
            var document = new Dictionary <string, object>()
                           .String("string1", "string value 1")
                           .String("foo.string2", "string value 2")
                           .String("foo.bar.string3", "string value 3");

            // JSON equivalent:
            // {
            //     "string1": "string value 1",
            //     "foo": {
            //         "string2": "string value 2",
            //         "bar": {
            //             "string3": "string value 3"
            //         }
            //     }
            // }

            var string1 = document.String("string1");
            var string2 = document.String("foo.string2");
            var string3 = document.String("foo.bar.string3");

            Console.WriteLine(string1);
            Console.WriteLine(string2);
            Console.WriteLine(string3);
        }
Beispiel #6
0
        /// <summary>
        /// Determines whether to include document revision ids in the checksum calculation. Default value: false.
        /// </summary>
        public ACollection WithRevisions(bool value)
        {
            // needs to be in string format
            _parameters.String(ParameterName.WithRevisions, value.ToString().ToLower());

            return(this);
        }
Beispiel #7
0
    public void Show(Dictionary <string, object> dict)
    {
        Name.text = dict.String("winner");
        if (dict.String("winnerid") == GameData.Shared.Uid)
        {
            Name.color = MaterialUI.MaterialColor.cyanA200;
        }
        else
        {
            Name.color = Color.white;
        }

        // 分数
        var score = dict.Int("score");

        Score.text  = _.Num2CnDigit(score, true);
        Score.color = _.GetTextColor(score);

        // 底池
        Pot.text = _.Num2CnDigit(dict.Int("pot"));

        // 牌型
        var desc           = Card.GetCardDesc(dict.Int("maxFiveRank"));
        var cardTypeParent = CardType.transform.parent.gameObject;

        if (string.IsNullOrEmpty(desc))
        {
            cardTypeParent.SetActive(false);
        }
        else
        {
            cardTypeParent.SetActive(true);
            CardType.text = desc;
        }

        //omaha特殊处理
        bool isOmaha = GameData.Shared.Type.Value == GameType.Omaha;

        CardContainers[2].gameObject.SetActive(isOmaha);
        CardContainers[3].gameObject.SetActive(isOmaha);
        HandCardsParent.spacing = isOmaha ? -46 : 6;


        // 手牌
        var cards = dict.IL("cards");

        if (cards.Count <= 0)
        {
            foreach (var card in CardContainers)
            {
                card.CardInstance.Turnback();
            }
            return;
        }

        for (int i = 0; i < cards.Count; i++)
        {
            CardContainers[i].CardInstance.Show(cards[i]);
        }
    }
Beispiel #8
0
    public void Init(Dictionary <string, object> gamerMes)
    {
        uid        = gamerMes.String("uid");
        enterLimit = gamerMes.Int("enter_limit") == 1;
        seatLimit  = gamerMes.Int("seat_limit") == 1;
        talkLimit  = gamerMes.Int("talk_limit") == 1;

        Name.text = gamerMes.String("name");

        if (gamerMes.Bool("in_room"))
        {
            if (gamerMes.Int("seat") > -1)
            {
                State.text = "游戏中";
            }
            else
            {
                State.text = "旁观中";
            }
        }

        EnterLimitImg.color = enterLimit ? Color.white : unlimitCol;
        SeatLimitImg.color  = seatLimit ? Color.white : unlimitCol;
        TalkLimitImg.color  = talkLimit ? Color.white : unlimitCol;

        GamerAvatar.GetComponent <Avatar>().SetImage(gamerMes.String("avatar"));
        GamerAvatar.GetComponent <Avatar>().SetAlpha(gamerMes.Bool("in_room"));
    }
Beispiel #9
0
 private static ArgumentMetadata ReadArgument(Dictionary <string, object> dict)
 {
     return(new ArgumentMetadata
     {
         Name = dict.String("name"),
         ValueProvider = (Identifier)dict.String("valueProvider"),
         Optional = dict.Bool("optional"),
         Affinity = dict.Enum <ArgumentAffinity>("affinity")
     });
 }
Beispiel #10
0
        /// <summary>
        /// Determines whether collection should be created if it does not exist. Default value: false.
        /// </summary>
        public AEdge CreateCollection(bool value)
        {
            // needs to be string value
            _parameters.String(ParameterName.CreateCollection, value.ToString().ToLower());

            return(this);
        }
        /// <summary>
        /// Determines whether or not to wait until data are synchronised to disk. Default value: false.
        /// </summary>
        public ADocument WaitForSync(bool value)
        {
            // needs to be string value
            _parameters.String(ParameterName.WaitForSync, value.ToString().ToLower());

            return(this);
        }
Beispiel #12
0
    public void Init(Dictionary <string, object> data, int maxPercent)
    {
        var player     = GameData.Shared.FindPlayer(data.String("uid"));
        var outsNumber = data.Int("ct");

        Name.text = player.Name;

        //omaha特殊处理
        bool isOmaha = GameData.Shared.Type.Value == GameType.Omaha;

        CardContainers[2].gameObject.SetActive(isOmaha);
        CardContainers[3].gameObject.SetActive(isOmaha);
        CardsParent.spacing = isOmaha ? -46 : 8;

        for (int i = 0; i < player.Cards.Value.Count; i++)
        {
            CardContainers[i].CardInstance.Show(player.Cards.Value[i]);
        }

        Kind.text        = outsNumber.ToString() + "张";
        WinRateText.text = data.Int("win_rate") + "%";
        string color = data.Int("win_rate") == maxPercent? "#ff1744" : "#868d94";

        WinRateText.transform.parent.gameObject.SetActive(maxPercent != -1);
        WinRateText.transform.parent.GetComponent <ProceduralImage>().color = _.HexColor(color);
    }
Beispiel #13
0
        public void Should_update_document_with_waitForSync()
        {
            var documents = Database.ClearCollectionAndFetchTestDocumentData(Database.TestDocumentCollectionName);
            var db        = new ADatabase(Database.Alias);

            var document = new Dictionary <string, object>()
                           .String("foo", "some other new string")
                           .Int("bar", 54321)
                           .Int("baz", 12345);

            var updateResult = db.Document
                               .WaitForSync(true)
                               .Update(documents[0].ID(), document);

            Assert.AreEqual(201, updateResult.StatusCode);
            Assert.IsTrue(updateResult.Success);
            Assert.IsTrue(updateResult.HasValue);
            Assert.AreEqual(updateResult.Value.ID(), documents[0].ID());
            Assert.AreEqual(updateResult.Value.Key(), documents[0].Key());
            Assert.AreNotEqual(updateResult.Value.Rev(), documents[0].Rev());

            var getResult = db.Document
                            .Get(updateResult.Value.ID());

            Assert.AreEqual(getResult.Value.ID(), updateResult.Value.ID());
            Assert.AreEqual(getResult.Value.Key(), updateResult.Value.Key());
            Assert.AreEqual(getResult.Value.Rev(), updateResult.Value.Rev());

            Assert.AreNotEqual(getResult.Value.String("foo"), documents[0].String("foo"));
            Assert.AreEqual(getResult.Value.String("foo"), document.String("foo"));

            Assert.AreNotEqual(getResult.Value.Int("bar"), documents[0].Int("bar"));
            Assert.AreEqual(getResult.Value.Int("bar"), document.Int("bar"));
            Assert.AreEqual(getResult.Value.Int("baz"), document.Int("baz"));
        }
Beispiel #14
0
        public void Should_replace_document_with_ifMatch()
        {
            var documents = Database.ClearCollectionAndFetchTestDocumentData(Database.TestDocumentCollectionName);
            var db        = new ADatabase(Database.Alias);

            var document = new Dictionary <string, object>()
                           .String("foo", "some other new string")
                           .Int("baz", 54321);

            var replaceResult = db.Document
                                .IfMatch(documents[0].Rev())
                                .Replace(documents[0].ID(), document);

            Assert.AreEqual(202, replaceResult.StatusCode);
            Assert.IsTrue(replaceResult.Success);
            Assert.IsTrue(replaceResult.HasValue);
            Assert.AreEqual(replaceResult.Value.ID(), documents[0].ID());
            Assert.AreEqual(replaceResult.Value.Key(), documents[0].Key());
            Assert.AreNotEqual(replaceResult.Value.Rev(), documents[0].Rev());

            var getResult = db.Document
                            .Get(replaceResult.Value.ID());

            Assert.AreEqual(getResult.Value.ID(), replaceResult.Value.ID());
            Assert.AreEqual(getResult.Value.Key(), replaceResult.Value.Key());
            Assert.AreEqual(getResult.Value.Rev(), replaceResult.Value.Rev());

            Assert.AreNotEqual(getResult.Value.String("foo"), documents[0].String("foo"));
            Assert.AreEqual(getResult.Value.String("foo"), document.String("foo"));

            Assert.AreEqual(getResult.Value.Int("baz"), document.Int("baz"));

            Assert.IsFalse(getResult.Value.Has("bar"));
        }
Beispiel #15
0
        public void Should_create_document_with_returnNew_parameter()
        {
            Database.ClearTestCollection(Database.TestDocumentCollectionName);
            var db = new ADatabase(Database.Alias);

            var document = new Dictionary <string, object>()
                           .String("foo", "foo string value")
                           .Int("bar", 12345);

            var createResult = db.Document
                               .ReturnNew()
                               .Create(Database.TestDocumentCollectionName, document);

            Assert.AreEqual(202, createResult.StatusCode);
            Assert.IsTrue(createResult.Success);
            Assert.IsTrue(createResult.HasValue);
            Assert.IsTrue(createResult.Value.IsString("_id"));
            Assert.IsTrue(createResult.Value.IsString("_key"));
            Assert.IsTrue(createResult.Value.IsString("_rev"));
            Assert.IsTrue(createResult.Value.Has("new"));
            Assert.AreEqual(createResult.Value.ID(), createResult.Value.String("new._id"));
            Assert.AreEqual(createResult.Value.Key(), createResult.Value.String("new._key"));
            Assert.AreEqual(createResult.Value.Rev(), createResult.Value.String("new._rev"));
            Assert.AreEqual(document.String("foo"), createResult.Value.String("new.foo"));
            Assert.AreEqual(document.Int("bar"), createResult.Value.Int("new.bar"));
        }
Beispiel #16
0
        /// <summary>
        /// Determines whether system collections should be excluded from the result.
        /// </summary>
        public ADatabase ExcludeSystem(bool value)
        {
            // string because value will be stored in query string
            _parameters.String(ParameterName.ExcludeSystem, value.ToString().ToLower());

            return(this);
        }
 internal void TrySetQueryStringParameter(string parameterName, Dictionary <string, object> parameters)
 {
     if (parameters.ContainsKey(parameterName))
     {
         QueryString.Add(parameterName, parameters.String(parameterName));
     }
 }
Beispiel #18
0
        /// <summary>
        /// Analyzes specified AQL query.
        /// </summary>
        public AResult <Dictionary <string, object> > Parse(string query)
        {
            var request      = new Request(HttpMethod.POST, ApiBaseUri.Query, "");
            var bodyDocument = new Dictionary <string, object>();

            // required
            bodyDocument.String(ParameterName.Query, Minify(query));

            request.Body = JSON.ToJSON(bodyDocument, ASettings.JsonParameters);

            var response = _connection.Send(request);
            var result   = new AResult <Dictionary <string, object> >(response);

            switch (response.StatusCode)
            {
            case 200:
                if (response.DataType == DataType.Document)
                {
                    result.Value   = (response.Data as Dictionary <string, object>).CloneExcept("code", "error");
                    result.Success = (result.Value != null);
                }
                break;

            case 400:
            default:
                // Arango error
                break;
            }

            _parameters.Clear();
            _bindVars.Clear();
            _query.Clear();

            return(result);
        }
Beispiel #19
0
        private Response GetResponse()
        {
            var request      = new Request(HttpMethod.POST, ApiBaseUri.Cursor, "");
            var bodyDocument = new Dictionary <string, object>();

            // required
            bodyDocument.String(ParameterName.Query, _query.ToString());
            // optional
            Request.TrySetBodyParameter(ParameterName.Count, _parameters, bodyDocument);
            // optional
            Request.TrySetBodyParameter(ParameterName.BatchSize, _parameters, bodyDocument);
            // optional
            Request.TrySetBodyParameter(ParameterName.TTL, _parameters, bodyDocument);
            // optional
            if (_bindVars.Count > 0)
            {
                bodyDocument.Document(ParameterName.BindVars, _bindVars);
            }

            // TODO: options parameter

            request.Body = JSON.ToJSON(bodyDocument, ASettings.JsonParameters);
            //this.LastRequest = request.Body;
            var response = _connection.Send(request);

            if (response.StatusCode != 201)
            {
                throw new Exception("Arango returned: " + response.StatusCode + ": " + response.Error);
            }

            return(response);
            //this.LastResponse = response.Body;
        }
Beispiel #20
0
        public static void DateTimeSetGetOperations()
        {
            var document = new Dictionary <string, object>()
                           // stored as native DateTime object
                           .DateTime("dateTime1", DateTime.UtcNow)
                           // stored in default yyyy-MM-ddTHH:mm:ss.fffZ string format
                           .DateTime("dateTime2", DateTime.UtcNow, DateTimeFormat.String)
                           // stored in unix timestamp format as long type
                           .DateTime("dateTime3", DateTime.UtcNow, DateTimeFormat.UnixTimeStamp);

            // standard get operations
            var dateTime         = document.DateTime("dateTime1");
            var dateTimeAsString = document.String("dateTime2");
            var dateTimeAsLong   = document.Long("dateTime3");

            // automatic conversion
            var stringConvertedToDateTime = document.DateTime("dateTime2");
            var longConvertedToDateTime   = document.DateTime("dateTime3");

            Console.WriteLine(dateTime.ToString());
            Console.WriteLine(dateTimeAsString);
            Console.WriteLine(dateTimeAsLong);
            Console.WriteLine(stringConvertedToDateTime.ToString());
            Console.WriteLine(longConvertedToDateTime.ToString());
        }
Beispiel #21
0
        public void Should_update_document_with_ifMatch_and_lastUpdatePolicy()
        {
            var documents = Database.ClearCollectionAndFetchTestDocumentData(Database.TestDocumentCollectionName);
            var db        = new ADatabase(Database.Alias);

            var document = new Dictionary <string, object>()
                           .String("foo", "some other new string")
                           .Int("bar", 54321)
                           .Int("baz", 12345);

            var updateResult = db.Document
                               .IfMatch("123456789", AUpdatePolicy.Last)
                               .Update(documents[0].String("_id"), document);

            Assert.AreEqual(202, updateResult.StatusCode);
            Assert.IsTrue(updateResult.Success);
            Assert.IsTrue(updateResult.HasValue);
            Assert.AreEqual(updateResult.Value.String("_id"), documents[0].String("_id"));
            Assert.AreEqual(updateResult.Value.String("_key"), documents[0].String("_key"));
            Assert.AreNotEqual(updateResult.Value.String("_rev"), documents[0].String("_rev"));

            var getResult = db.Document
                            .Get(updateResult.Value.String("_id"));

            Assert.AreEqual(getResult.Value.String("_id"), updateResult.Value.String("_id"));
            Assert.AreEqual(getResult.Value.String("_key"), updateResult.Value.String("_key"));
            Assert.AreEqual(getResult.Value.String("_rev"), updateResult.Value.String("_rev"));

            Assert.AreNotEqual(getResult.Value.String("foo"), documents[0].String("foo"));
            Assert.AreEqual(getResult.Value.String("foo"), document.String("foo"));

            Assert.AreNotEqual(getResult.Value.Int("bar"), documents[0].Int("bar"));
            Assert.AreEqual(getResult.Value.Int("bar"), document.Int("bar"));
            Assert.AreEqual(getResult.Value.Int("baz"), document.Int("baz"));
        }
Beispiel #22
0
 internal void TrySetHeaderParameter(string parameterName, Dictionary<string, object> parameters)
 {
     if (parameters.ContainsKey(parameterName))
     {
         Headers.Add(parameterName, parameters.String(parameterName));
     }
 }
Beispiel #23
0
        /// <summary>
        /// Executes specified transaction.
        /// </summary>
        public AResult <T> Execute <T>(string action)
        {
            var request      = new Request(HttpMethod.POST, ApiBaseUri.Transaction, "");
            var bodyDocument = new Dictionary <string, object>();

            // required
            bodyDocument.String(ParameterName.Action, action);
            // required
            if (_readCollections.Count > 0)
            {
                bodyDocument.List(ParameterName.Collections + ".read", _readCollections);
            }
            // required
            if (_writeCollections.Count > 0)
            {
                bodyDocument.List(ParameterName.Collections + ".write", _writeCollections);
            }
            // optional
            Request.TrySetBodyParameter(ParameterName.WaitForSync, _parameters, bodyDocument);
            // optional
            Request.TrySetBodyParameter(ParameterName.LockTimeout, _parameters, bodyDocument);
            // optional
            if (_transactionParams.Count > 0)
            {
                bodyDocument.Document(ParameterName.Params, _transactionParams);
            }

            request.Body = JSON.ToJSON(bodyDocument, ASettings.JsonParameters);

            var response = _connection.Send(request);
            var result   = new AResult <T>(response);

            switch (response.StatusCode)
            {
            case 200:
                if (response.DataType == DataType.Document)
                {
                    var transaction = (response.Data as Dictionary <string, object>).ToObject <Transaction <T> >();
                    result.Value   = transaction.result;
                    result.Success = (result.Value != null);
                }
                break;

            case 400:
            case 404:
            case 409:
            case 500:
            default:
                // Arango error
                break;
            }

            _parameters.Clear();
            _readCollections.Clear();
            _writeCollections.Clear();
            _transactionParams.Clear();

            return(result);
        }
Beispiel #24
0
        public static T Enum <T>(this Dictionary <string, object> dict, string key) where T : struct
        {
            var str = dict.String(key);
            T   res;

            System.Enum.TryParse <T>(str, true, out res);
            return(res);
        }
Beispiel #25
0
        /// <summary>
        /// Creates new collection in current database context.
        /// </summary>
        public AResult <Dictionary <string, object> > Create(string collectionName)
        {
            var request      = new Request(HttpMethod.POST, ApiBaseUri.Collection, "");
            var bodyDocument = new Dictionary <string, object>();

            // required
            bodyDocument.String(ParameterName.Name, collectionName);
            // optional
            Request.TrySetBodyParameter(ParameterName.Type, _parameters, bodyDocument);
            // optional
            Request.TrySetBodyParameter(ParameterName.WaitForSync, _parameters, bodyDocument);
            // optional
            Request.TrySetBodyParameter(ParameterName.JournalSize, _parameters, bodyDocument);
            // optional
            Request.TrySetBodyParameter(ParameterName.DoCompact, _parameters, bodyDocument);
            // optional
            Request.TrySetBodyParameter(ParameterName.IsSystem, _parameters, bodyDocument);
            // optional
            Request.TrySetBodyParameter(ParameterName.IsVolatile, _parameters, bodyDocument);
            // optional
            Request.TrySetBodyParameter(ParameterName.KeyOptionsType, _parameters, bodyDocument);
            // optional
            Request.TrySetBodyParameter(ParameterName.KeyOptionsAllowUserKeys, _parameters, bodyDocument);
            // optional
            Request.TrySetBodyParameter(ParameterName.KeyOptionsIncrement, _parameters, bodyDocument);
            // optional
            Request.TrySetBodyParameter(ParameterName.KeyOptionsOffset, _parameters, bodyDocument);
            // optional
            Request.TrySetBodyParameter(ParameterName.NumberOfShards, _parameters, bodyDocument);
            // optional
            Request.TrySetBodyParameter(ParameterName.ShardKeys, _parameters, bodyDocument);

            request.Body = JSON.ToJSON(bodyDocument, ASettings.JsonParameters);

            var response = _connection.Send(request);
            var result   = new AResult <Dictionary <string, object> >(response);

            switch (response.StatusCode)
            {
            case 200:
                if (response.DataType == DataType.Document)
                {
                    result.Value   = (response.Data as Dictionary <string, object>);
                    result.Success = (result.Value != null);
                }
                break;

            default:
                // Arango error
                break;
            }

            _parameters.Clear();

            return(result);
        }
Beispiel #26
0
 public GameOverJson(Dictionary <string, object> dict)
 {
     prize       = dict.Int("prize");
     chips       = dict.Int("chips");
     uid         = dict.String("uid");
     seat        = dict.Int("seat");
     cards       = dict.IL("cards");
     maxFiveRank = dict.Int("maxFiveRank");
     bury_card   = dict.Int("bury_card") == 1;
 }
Beispiel #27
0
    public void Init(Dictionary <string, object> data)
    {
        var code = GameData.Shared.GameCode.Value = data.String("code");
        var name = GameData.Shared.RoomName.Value = data.String("name");

        avatar.SetImage(GameData.Shared.Avatar);
        var dt = data.Dict("myself");

        coins.text = _.Num2CnDigit(dt.Int("bankroll"));

        ts = data.Int("left_time");
        setTime();

        RoomName.text = name;

        var codeGo = inviteCode.transform.parent.gameObject;

        if (string.IsNullOrEmpty(code))
        {
            codeGo.SetActive(false);
        }
        else
        {
            codeGo.SetActive(true);
            inviteCode.text = code;
        }

        if (disposable != null)
        {
            disposable.Dispose();
        }

        disposable = Observable.Interval(TimeSpan.FromSeconds(1)).Where((_) => ts > 0).Subscribe((_) => {
            ts--;
            setTime();

            if (ts <= 0)
            {
                disposable.Dispose();
            }
        }).AddTo(this);
    }
Beispiel #28
0
        public void Should_update_document_with_mergeArrays_set_to_false()
        {
            var db = new ADatabase(Database.Alias);

            var newDocument = new Dictionary <string, object>()
                              .String("foo", "some string")
                              .Document("bar", new Dictionary <string, object>().String("foo", "string value"));

            var createResult = db.Document
                               .Create(Database.TestDocumentCollectionName, newDocument);

            newDocument.Merge(createResult.Value);

            var document = new Dictionary <string, object>()
                           .String("foo", "some other new string")
                           .Document("bar", new Dictionary <string, object>().String("bar", "other string value"));

            var updateResult = db.Document
                               .MergeObjects(false)
                               .Update(newDocument.String("_id"), document);

            Assert.AreEqual(202, updateResult.StatusCode);
            Assert.IsTrue(updateResult.Success);
            Assert.IsTrue(updateResult.HasValue);
            Assert.AreEqual(updateResult.Value.String("_id"), newDocument.String("_id"));
            Assert.AreEqual(updateResult.Value.String("_key"), newDocument.String("_key"));
            Assert.AreNotEqual(updateResult.Value.String("_rev"), newDocument.String("_rev"));

            var getResult = db.Document
                            .Get(updateResult.Value.String("_id"));

            Assert.AreEqual(getResult.Value.String("_id"), updateResult.Value.String("_id"));
            Assert.AreEqual(getResult.Value.String("_key"), updateResult.Value.String("_key"));
            Assert.AreEqual(getResult.Value.String("_rev"), updateResult.Value.String("_rev"));

            Assert.AreNotEqual(getResult.Value.String("foo"), newDocument.String("foo"));
            Assert.AreEqual(getResult.Value.String("foo"), document.String("foo"));

            Assert.IsFalse(getResult.Value.Has("bar.foo"));

            Assert.IsTrue(getResult.Value.Has("bar.bar"));
        }
Beispiel #29
0
        public void Should_create_document_with_custom_ID()
        {
            Database.ClearTestCollection(Database.TestDocumentCollectionName);
            var db = new ADatabase(Database.Alias);

            var document = new Dictionary <string, object>()
                           .String("_key", "1234-5678")
                           .String("foo", "foo string value")
                           .Int("bar", 12345);

            var createResult = db.Document
                               .Create(Database.TestDocumentCollectionName, document);

            Assert.AreEqual(202, createResult.StatusCode);
            Assert.IsTrue(createResult.Success);
            Assert.IsTrue(createResult.HasValue);
            Assert.AreEqual(Database.TestDocumentCollectionName + "/" + document.String("_key"), createResult.Value.String("_id"));
            Assert.AreEqual(document.String("_key"), createResult.Value.String("_key"));
            Assert.IsTrue(createResult.Value.IsString("_rev"));
        }
Beispiel #30
0
        public void Should_serialize_guid()
        {
            var doc = new Dictionary <string, object>()
                      .Guid("MyGuid1", Guid.NewGuid())
                      .String("MyGuid2", Guid.NewGuid().ToString());

            var entity = doc.ToObject <GuidEntity>();

            Assert.AreEqual(doc.Guid("MyGuid1").ToString(), entity.MyGuid1.ToString());
            Assert.AreEqual(doc.String("MyGuid2"), entity.MyGuid2.ToString());
        }
Beispiel #31
0
        private void CopyExtraBodyFields <T>(Body <T> source, Dictionary <string, object> destination)
        {
            destination.String("id", source.ID);
            destination.Long("count", source.Count);
            destination.Bool("cached", source.Cached);

            if (source.Extra != null)
            {
                destination.Document("extra", (Dictionary <string, object>)source.Extra);
            }
        }
        public void Should_update_edge_with_generic_object()
        {
            Database.ClearTestCollection(Database.TestEdgeCollectionName);
            var db = new ADatabase(Database.Alias);

            var document = new Dictionary<string, object>()
                .String("foo", "some string")
                .Int("bar", 12345);

            var createResult = db.Edge
                .Create(Database.TestEdgeCollectionName, _documents[0].String("_id"), _documents[1].String("_id"), document);

            var dummy = new Dummy();
            dummy.Foo = "some other new string";
            dummy.Bar = 54321;
            dummy.Baz = 12345;

            var updateResult = db.Edge
                .Update(createResult.Value.String("_id"), dummy);

            Assert.AreEqual(202, updateResult.StatusCode);
            Assert.IsTrue(updateResult.Success);
            Assert.IsTrue(updateResult.HasValue);
            Assert.AreEqual(updateResult.Value.String("_id"), createResult.Value.String("_id"));
            Assert.AreEqual(updateResult.Value.String("_key"), createResult.Value.String("_key"));
            Assert.AreNotEqual(updateResult.Value.String("_rev"), createResult.Value.String("_rev"));

            var getResult = db.Edge
                .Get(updateResult.Value.String("_id"));

            Assert.AreEqual(getResult.Value.String("_id"), updateResult.Value.String("_id"));
            Assert.AreEqual(getResult.Value.String("_key"), updateResult.Value.String("_key"));
            Assert.AreEqual(getResult.Value.String("_rev"), updateResult.Value.String("_rev"));

            Assert.AreNotEqual(getResult.Value.String("foo"), document.String("foo"));
            Assert.AreEqual(getResult.Value.String("foo"), dummy.Foo);

            Assert.AreNotEqual(getResult.Value.Int("bar"), document.Int("bar"));
            Assert.AreEqual(getResult.Value.Int("bar"), dummy.Bar);
            Assert.AreEqual(getResult.Value.Int("baz"), dummy.Baz);
        }
        public void Should_update_edge_with_ifMatch()
        {
            Database.ClearTestCollection(Database.TestEdgeCollectionName);
            var db = new ADatabase(Database.Alias);

            var document = new Dictionary<string, object>()
                .String("foo", "some string")
                .Int("bar", 12345);

            var createResult = db.Edge
                .Create(Database.TestEdgeCollectionName, _documents[0].String("_id"), _documents[1].String("_id"), document);

            var newDocument = new Dictionary<string, object>()
                .String("foo", "some other new string")
                .Int("bar", 54321)
                .Int("baz", 12345);

            var updateResult = db.Edge
                .IfMatch(createResult.Value.String("_rev"))
                .Update(createResult.Value.String("_id"), newDocument);

            Assert.AreEqual(202, updateResult.StatusCode);
            Assert.IsTrue(updateResult.Success);
            Assert.IsTrue(updateResult.HasValue);
            Assert.AreEqual(updateResult.Value.String("_id"), createResult.Value.String("_id"));
            Assert.AreEqual(updateResult.Value.String("_key"), createResult.Value.String("_key"));
            Assert.AreNotEqual(updateResult.Value.String("_rev"), createResult.Value.String("_rev"));

            var getResult = db.Edge
                .Get(updateResult.Value.String("_id"));

            Assert.AreEqual(getResult.Value.String("_id"), updateResult.Value.String("_id"));
            Assert.AreEqual(getResult.Value.String("_key"), updateResult.Value.String("_key"));
            Assert.AreEqual(getResult.Value.String("_rev"), updateResult.Value.String("_rev"));

            Assert.AreNotEqual(getResult.Value.String("foo"), document.String("foo"));
            Assert.AreEqual(getResult.Value.String("foo"), newDocument.String("foo"));

            Assert.AreNotEqual(getResult.Value.Int("bar"), document.Int("bar"));
            Assert.AreEqual(getResult.Value.Int("bar"), newDocument.Int("bar"));

            // by default JSON integers are deserialized to long type
            Assert.IsTrue(getResult.Value.IsLong("baz"));
        }
        public void Should_update_edge_with_mergeArrays_set_to_true()
        {
            Database.ClearTestCollection(Database.TestEdgeCollectionName);
            var db = new ADatabase(Database.Alias);

            var document = new Dictionary<string, object>()
                .String("foo", "some string")
                .Document("bar", new Dictionary<string, object>().String("foo", "string value"));

            var createResult = db.Edge
                .Create(Database.TestEdgeCollectionName, _documents[0].String("_id"), _documents[1].String("_id"), document);

            document.Merge(createResult.Value);

            var newDocument = new Dictionary<string, object>()
                .String("foo", "some other new string")
                .Document("bar", new Dictionary<string, object>().String("bar", "other string value"));

            var updateResult = db.Edge
                .MergeObjects(true) // this is also default behavior
                .Update(createResult.Value.String("_id"), newDocument);

            Assert.AreEqual(202, updateResult.StatusCode);
            Assert.IsTrue(updateResult.Success);
            Assert.IsTrue(updateResult.HasValue);
            Assert.AreEqual(updateResult.Value.String("_id"), document.String("_id"));
            Assert.AreEqual(updateResult.Value.String("_key"), document.String("_key"));
            Assert.AreNotEqual(updateResult.Value.String("_rev"), document.String("_rev"));

            var getResult = db.Document
                .Get(updateResult.Value.String("_id"));

            Assert.AreEqual(getResult.Value.String("_id"), updateResult.Value.String("_id"));
            Assert.AreEqual(getResult.Value.String("_key"), updateResult.Value.String("_key"));
            Assert.AreEqual(getResult.Value.String("_rev"), updateResult.Value.String("_rev"));

            Assert.AreNotEqual(getResult.Value.String("foo"), document.String("foo"));
            Assert.AreEqual(getResult.Value.String("foo"), newDocument.String("foo"));

            Assert.IsTrue(getResult.Value.Has("bar.foo"));

            Assert.IsTrue(getResult.Value.Has("bar.bar"));
        }
        public void Should_update_edge_with_keepNull()
        {
            Database.ClearTestCollection(Database.TestEdgeCollectionName);
            var db = new ADatabase(Database.Alias);

            var document = new Dictionary<string, object>()
                .String("foo", "some string")
                .Object("bar", null);

            var createResult = db.Edge
                .Create(Database.TestEdgeCollectionName, _documents[0].String("_id"), _documents[1].String("_id"), document);

            document.Merge(createResult.Value);

            var newDocument = new Dictionary<string, object>()
                .String("foo", "some other new string")
                .Object("baz", null);

            var updateResult = db.Edge
                .KeepNull(false)
                .Update(createResult.Value.String("_id"), newDocument);

            Assert.AreEqual(202, updateResult.StatusCode);
            Assert.IsTrue(updateResult.Success);
            Assert.IsTrue(updateResult.HasValue);
            Assert.AreEqual(updateResult.Value.String("_id"), document.String("_id"));
            Assert.AreEqual(updateResult.Value.String("_key"), document.String("_key"));
            Assert.AreNotEqual(updateResult.Value.String("_rev"), document.String("_rev"));

            var getResult = db.Document
                .Get(updateResult.Value.String("_id"));

            Assert.AreEqual(getResult.Value.String("_id"), updateResult.Value.String("_id"));
            Assert.AreEqual(getResult.Value.String("_key"), updateResult.Value.String("_key"));
            Assert.AreEqual(getResult.Value.String("_rev"), updateResult.Value.String("_rev"));

            Assert.AreNotEqual(getResult.Value.String("foo"), document.String("foo"));
            Assert.AreEqual(getResult.Value.String("foo"), newDocument.String("foo"));

            Assert.IsTrue(getResult.Value.Has("bar"));

            Assert.IsFalse(getResult.Value.Has("baz"));
        }
        public void Should_get_edge_as_generic_object()
        {
            Database.ClearTestCollection(Database.TestEdgeCollectionName);
            var db = new ADatabase(Database.Alias);

            var document = new Dictionary<string, object>()
                .String("foo", "foo string value")
                .Int("bar", 12345);

            var createResult = db.Edge
                .Create(Database.TestEdgeCollectionName, _documents[0].String("_id"), _documents[1].String("_id"), document);

            var getResult = db.Edge
                .Get<Dummy>(createResult.Value.String("_id"));

            Assert.AreEqual(200, getResult.StatusCode);
            Assert.IsTrue(getResult.Success);
            Assert.IsTrue(getResult.HasValue);
            Assert.AreEqual(document.String("foo"), getResult.Value.Foo);
            Assert.AreEqual(document.Int("bar"), getResult.Value.Bar);
            Assert.AreEqual(0, getResult.Value.Baz);
        }
        public void Should_update_document_with_keepNull()
        {
            var db = new ADatabase(Database.Alias);

            var newDocument = new Dictionary<string, object>()
                .String("foo", "some string")
                .Object("bar", null);

            var createResult = db.Document
                .Create(Database.TestDocumentCollectionName, newDocument);

            newDocument.Merge(createResult.Value);

            var document = new Dictionary<string, object>()
                .String("foo", "some other new string")
                .Object("baz", null);

            var updateResult = db.Document
                .KeepNull(false)
                .Update(newDocument.ID(), document);

            Assert.AreEqual(202, updateResult.StatusCode);
            Assert.IsTrue(updateResult.Success);
            Assert.IsTrue(updateResult.HasValue);
            Assert.AreEqual(updateResult.Value.ID(), newDocument.ID());
            Assert.AreEqual(updateResult.Value.Key(), newDocument.Key());
            Assert.AreNotEqual(updateResult.Value.Rev(), newDocument.Rev());

            var getResult = db.Document
                .Get(updateResult.Value.ID());

            Assert.AreEqual(getResult.Value.ID(), updateResult.Value.ID());
            Assert.AreEqual(getResult.Value.Key(), updateResult.Value.Key());
            Assert.AreEqual(getResult.Value.Rev(), updateResult.Value.Rev());

            Assert.AreNotEqual(getResult.Value.String("foo"), newDocument.String("foo"));
            Assert.AreEqual(getResult.Value.String("foo"), document.String("foo"));

            Assert.IsTrue(getResult.Value.Has("bar"));

            Assert.IsFalse(getResult.Value.Has("baz"));
        }
        public void Should_replace_edge_with_ifMatch_and_return_412()
        {
            Database.ClearTestCollection(Database.TestEdgeCollectionName);
            var db = new ADatabase(Database.Alias);

            var document = new Dictionary<string, object>()
                .String("foo", "some string")
                .Int("bar", 12345);

            var createResult = db.Edge
                .Create(Database.TestEdgeCollectionName, _documents[0].String("_id"), _documents[1].String("_id"), document);

            document.Merge(createResult.Value);

            var newDocument = new Dictionary<string, object>()
                .String("foo", "some other new string")
                .Int("baz", 54321);

            var replaceResult = db.Edge
                .IfMatch("123456789")
                .Replace(createResult.Value.String("_id"), newDocument);

            Assert.AreEqual(412, replaceResult.StatusCode);
            Assert.IsFalse(replaceResult.Success);
            Assert.IsTrue(replaceResult.HasValue);
            Assert.AreEqual(replaceResult.Value.String("_id"), document.String("_id"));
            Assert.AreEqual(replaceResult.Value.String("_key"), document.String("_key"));
            Assert.AreEqual(replaceResult.Value.String("_rev"), document.String("_rev"));
        }
        public void Should_update_document_with_waitForSync()
        {
            var documents = Database.ClearCollectionAndFetchTestDocumentData(Database.TestDocumentCollectionName);
            var db = new ADatabase(Database.Alias);

            var document = new Dictionary<string, object>()
                .String("foo", "some other new string")
                .Int("bar", 54321)
                .Int("baz", 12345);

            var updateResult = db.Document
                .WaitForSync(true)
                .Update(documents[0].String("_id"), document);

            Assert.AreEqual(201, updateResult.StatusCode);
            Assert.IsTrue(updateResult.Success);
            Assert.IsTrue(updateResult.HasValue);
            Assert.AreEqual(updateResult.Value.String("_id"), documents[0].String("_id"));
            Assert.AreEqual(updateResult.Value.String("_key"), documents[0].String("_key"));
            Assert.AreNotEqual(updateResult.Value.String("_rev"), documents[0].String("_rev"));

            var getResult = db.Document
                .Get(updateResult.Value.String("_id"));

            Assert.AreEqual(getResult.Value.String("_id"), updateResult.Value.String("_id"));
            Assert.AreEqual(getResult.Value.String("_key"), updateResult.Value.String("_key"));
            Assert.AreEqual(getResult.Value.String("_rev"), updateResult.Value.String("_rev"));

            Assert.AreNotEqual(getResult.Value.String("foo"), documents[0].String("foo"));
            Assert.AreEqual(getResult.Value.String("foo"), document.String("foo"));

            Assert.AreNotEqual(getResult.Value.Int("bar"), documents[0].Int("bar"));
            Assert.AreEqual(getResult.Value.Int("bar"), document.Int("bar"));
            Assert.AreEqual(getResult.Value.Int("baz"), document.Int("baz"));
        }
        public void Should_replace_edge_with_ifMatch()
        {
            Database.ClearTestCollection(Database.TestEdgeCollectionName);
            var db = new ADatabase(Database.Alias);

            var document = new Dictionary<string, object>()
                .String("foo", "some string")
                .Int("bar", 12345);

            var createResult = db
                .Document
                .CreateEdge(Database.TestEdgeCollectionName, _documents[0].ID(), _documents[1].ID(), document);

            document.Merge(createResult.Value);

            var newDocument = new Dictionary<string, object>()
                .From(_documents[0].ID())
                .To(_documents[1].ID())
                .String("foo", "some other new string")
                .Int("baz", 54321);

            var replaceResult = db
                .Document
                .IfMatch(document.Rev())
                .Replace(createResult.Value.ID(), newDocument);

            Assert.AreEqual(202, replaceResult.StatusCode);
            Assert.IsTrue(replaceResult.Success);
            Assert.IsTrue(replaceResult.HasValue);
            Assert.AreEqual(replaceResult.Value.ID(), document.ID());
            Assert.AreEqual(replaceResult.Value.Key(), document.Key());
            Assert.AreNotEqual(replaceResult.Value.Rev(), document.Rev());

            var getResult = db
                .Document
                .Get(replaceResult.Value.ID());

            Assert.AreEqual(getResult.Value.ID(), replaceResult.Value.ID());
            Assert.AreEqual(getResult.Value.Key(), replaceResult.Value.Key());
            Assert.AreEqual(getResult.Value.Rev(), replaceResult.Value.Rev());

            Assert.AreNotEqual(getResult.Value.String("foo"), document.String("foo"));
            Assert.AreEqual(getResult.Value.String("foo"), newDocument.String("foo"));

            Assert.AreEqual(getResult.Value.Int("baz"), newDocument.Int("baz"));

            Assert.IsFalse(getResult.Value.Has("bar"));
        }
        public void Should_replace_document_with_waitForSync()
        {
            var documents = Database.ClearCollectionAndFetchTestDocumentData(Database.TestDocumentCollectionName);
            var db = new ADatabase(Database.Alias);

            var document = new Dictionary<string, object>()
                .String("foo", "some other new string")
                .Int("baz", 54321);

            var replaceResult = db.Document
                .WaitForSync(true)
                .Replace(documents[0].ID(), document);

            Assert.AreEqual(201, replaceResult.StatusCode);
            Assert.IsTrue(replaceResult.Success);
            Assert.IsTrue(replaceResult.HasValue);
            Assert.AreEqual(replaceResult.Value.ID(), documents[0].ID());
            Assert.AreEqual(replaceResult.Value.Key(), documents[0].Key());
            Assert.AreNotEqual(replaceResult.Value.Rev(), documents[0].Rev());

            var getResult = db.Document
                .Get(replaceResult.Value.ID());

            Assert.AreEqual(getResult.Value.ID(), replaceResult.Value.ID());
            Assert.AreEqual(getResult.Value.Key(), replaceResult.Value.Key());
            Assert.AreEqual(getResult.Value.Rev(), replaceResult.Value.Rev());

            Assert.AreNotEqual(getResult.Value.String("foo"), documents[0].String("foo"));
            Assert.AreEqual(getResult.Value.String("foo"), document.String("foo"));

            Assert.AreEqual(getResult.Value.Int("baz"), document.Int("baz"));

            Assert.IsFalse(getResult.Value.Has("bar"));
        }
        public void Should_create_document_with_custom_ID()
        {
            Database.ClearTestCollection(Database.TestDocumentCollectionName);
            var db = new ADatabase(Database.Alias);

            var document = new Dictionary<string, object>()
                .String("_key", "1234-5678")
                .String("foo", "foo string value")
                .Int("bar", 12345);

            var createResult = db.Document
                .Create(Database.TestDocumentCollectionName, document);

            Assert.AreEqual(202, createResult.StatusCode);
            Assert.IsTrue(createResult.Success);
            Assert.IsTrue(createResult.HasValue);
            Assert.AreEqual(Database.TestDocumentCollectionName + "/" + document.String("_key"), createResult.Value.String("_id"));
            Assert.AreEqual(document.String("_key"), createResult.Value.String("_key"));
            Assert.IsTrue(createResult.Value.IsString("_rev"));
        }
        public void Should_update_document_with_mergeArrays_set_to_false()
        {
            var db = new ADatabase(Database.Alias);

            var newDocument = new Dictionary<string, object>()
                .String("foo", "some string")
                .Document("bar", new Dictionary<string, object>().String("foo", "string value"));

            var createResult = db.Document
                .Create(Database.TestDocumentCollectionName, newDocument);

            newDocument.Merge(createResult.Value);

            var document = new Dictionary<string, object>()
                .String("foo", "some other new string")
                .Document("bar", new Dictionary<string, object>().String("bar", "other string value"));

            var updateResult = db.Document
                .MergeObjects(false)
                .Update(newDocument.String("_id"), document);

            Assert.AreEqual(202, updateResult.StatusCode);
            Assert.IsTrue(updateResult.Success);
            Assert.IsTrue(updateResult.HasValue);
            Assert.AreEqual(updateResult.Value.String("_id"), newDocument.String("_id"));
            Assert.AreEqual(updateResult.Value.String("_key"), newDocument.String("_key"));
            Assert.AreNotEqual(updateResult.Value.String("_rev"), newDocument.String("_rev"));

            var getResult = db.Document
                .Get(updateResult.Value.String("_id"));

            Assert.AreEqual(getResult.Value.String("_id"), updateResult.Value.String("_id"));
            Assert.AreEqual(getResult.Value.String("_key"), updateResult.Value.String("_key"));
            Assert.AreEqual(getResult.Value.String("_rev"), updateResult.Value.String("_rev"));

            Assert.AreNotEqual(getResult.Value.String("foo"), newDocument.String("foo"));
            Assert.AreEqual(getResult.Value.String("foo"), document.String("foo"));

            Assert.IsFalse(getResult.Value.Has("bar.foo"));

            Assert.IsTrue(getResult.Value.Has("bar.bar"));
        }
        public void Should_replace_edge_with_waitForSync()
        {
            Database.ClearTestCollection(Database.TestEdgeCollectionName);
            var db = new ADatabase(Database.Alias);

            var document = new Dictionary<string, object>()
                .String("foo", "some string")
                .Int("bar", 12345);

            var createResult = db.Edge
                .Create(Database.TestEdgeCollectionName, _documents[0].String("_id"), _documents[1].String("_id"), document);

            var newDocument = new Dictionary<string, object>()
                .String("foo", "some other new string")
                .Int("baz", 54321);

            var replaceResult = db.Edge
                .WaitForSync(true)
                .Replace(createResult.Value.String("_id"), newDocument);

            Assert.AreEqual(201, replaceResult.StatusCode);
            Assert.IsTrue(replaceResult.Success);
            Assert.IsTrue(replaceResult.HasValue);
            Assert.AreEqual(replaceResult.Value.String("_id"), createResult.Value.String("_id"));
            Assert.AreEqual(replaceResult.Value.String("_key"), createResult.Value.String("_key"));
            Assert.AreNotEqual(replaceResult.Value.String("_rev"), createResult.Value.String("_rev"));

            var getResult = db.Edge
                .Get(replaceResult.Value.String("_id"));

            Assert.AreEqual(getResult.Value.String("_id"), replaceResult.Value.String("_id"));
            Assert.AreEqual(getResult.Value.String("_key"), replaceResult.Value.String("_key"));
            Assert.AreEqual(getResult.Value.String("_rev"), replaceResult.Value.String("_rev"));

            Assert.AreNotEqual(getResult.Value.String("foo"), document.String("foo"));
            Assert.AreEqual(getResult.Value.String("foo"), newDocument.String("foo"));

            Assert.AreEqual(getResult.Value.Int("baz"), newDocument.Int("baz"));

            Assert.IsFalse(getResult.Value.Has("bar"));
        }
        public void Should_replace_edge_with_generic_object()
        {
            Database.ClearTestCollection(Database.TestEdgeCollectionName);
            var db = new ADatabase(Database.Alias);

            var document = new Dictionary<string, object>()
                .String("foo", "some string")
                .Int("bar", 12345);

            var createResult = db
                .Document
                .CreateEdge(Database.TestEdgeCollectionName, _documents[0].ID(), _documents[1].ID(), document);

            var dummy = new Dummy();
            dummy.Foo = "some other new string";
            dummy.Baz = 54321;

            var replaceResult = db
                .Document
                .ReplaceEdge(createResult.Value.ID(), _documents[0].ID(), _documents[1].ID(), dummy);

            Assert.AreEqual(202, replaceResult.StatusCode);
            Assert.IsTrue(replaceResult.Success);
            Assert.IsTrue(replaceResult.HasValue);
            Assert.AreEqual(replaceResult.Value.ID(), createResult.Value.ID());
            Assert.AreEqual(replaceResult.Value.Key(), createResult.Value.Key());
            Assert.AreNotEqual(replaceResult.Value.Rev(), createResult.Value.Rev());

            var getResult = db
                .Document
                .Get(replaceResult.Value.ID());

            Assert.AreEqual(getResult.Value.ID(), replaceResult.Value.ID());
            Assert.AreEqual(getResult.Value.Key(), replaceResult.Value.Key());
            Assert.AreEqual(getResult.Value.Rev(), replaceResult.Value.Rev());

            Assert.AreNotEqual(getResult.Value.String("foo"), document.String("foo"));
            Assert.AreEqual(getResult.Value.String("foo"), dummy.Foo);

            Assert.AreEqual(getResult.Value.Int("baz"), dummy.Baz);

            Assert.AreEqual(0, getResult.Value.Int("bar"));
        }
        public void Should_create_edge_with_returnNew_parameter()
        {
            Database.ClearTestCollection(Database.TestEdgeCollectionName);
            var db = new ADatabase(Database.Alias);

            var document = new Dictionary<string, object>()
                .From(_documents[0].ID())
                .To(_documents[1].ID())
                .String("foo", "foo string value")
                .Int("bar", 12345);

            var createResult = db
                .Document
                .ReturnNew()
                .CreateEdge(Database.TestEdgeCollectionName, document);

            Assert.AreEqual(202, createResult.StatusCode);
            Assert.IsTrue(createResult.Success);
            Assert.IsTrue(createResult.HasValue);
            Assert.IsTrue(createResult.Value.IsString("_id"));
            Assert.IsTrue(createResult.Value.IsString("_key"));
            Assert.IsTrue(createResult.Value.IsString("_rev"));
            Assert.IsTrue(createResult.Value.Has("new"));
            Assert.AreEqual(createResult.Value.ID(), createResult.Value.String("new._id"));
            Assert.AreEqual(createResult.Value.Key(), createResult.Value.String("new._key"));
            Assert.AreEqual(createResult.Value.Rev(), createResult.Value.String("new._rev"));
            Assert.AreEqual(document.String("_from"), createResult.Value.String("new._from"));
            Assert.AreEqual(document.String("_to"), createResult.Value.String("new._to"));
            Assert.AreEqual(document.String("foo"), createResult.Value.String("new.foo"));
            Assert.AreEqual(document.Int("bar"), createResult.Value.Int("new.bar"));
        }
Beispiel #47
0
        /// <summary>
        /// Creates new database with given name and user list.
        /// </summary>
        public AResult<bool> Create(string databaseName, List<AUser> users)
        {
            var request = new Request(HttpMethod.POST, ApiBaseUri.Database, "");
            var bodyDocument = new Dictionary<string, object>();

            // required: database name
            bodyDocument.String("name", databaseName);

            // optional: list of users
            if ((users != null) && (users.Count > 0))
            {
                var userList = new List<Dictionary<string, object>>();

                foreach (var user in users)
                {
                    var userItem = new Dictionary<string, object>();

                    if (!string.IsNullOrEmpty(user.Username))
                    {
                        userItem.String("username", user.Username);
                    }

                    if (!string.IsNullOrEmpty(user.Password))
                    {
                        userItem.String("passwd", user.Password);
                    }

                    userItem.Bool("active", user.Active);

                    if (user.Extra != null)
                    {
                        userItem.Document("extra", user.Extra);
                    }

                    userList.Add(userItem);
                }

                bodyDocument.List("users", userList);
            }

            request.Body = JSON.ToJSON(bodyDocument, ASettings.JsonParameters);

            var response = _connection.Send(request);
            var result = new AResult<bool>(response);

            switch (response.StatusCode)
            {
                case 201:
                    var body = response.ParseBody<Body<bool>>();

                    result.Success = (body != null);
                    result.Value = body.Result;
                    break;
                case 400:
                case 403:
                case 404:
                default:
                    // Arango error
                    break;
            }

            _parameters.Clear();

            return result;
        }
Beispiel #48
0
        /// <summary>
        /// Creates new collection in current database context.
        /// </summary>
        public AResult<Dictionary<string, object>> Create(string collectionName)
        {
            var request = new Request(HttpMethod.POST, ApiBaseUri.Collection, "");
            var bodyDocument = new Dictionary<string, object>();

            // required
            bodyDocument.String(ParameterName.Name, collectionName);
            // optional
            Request.TrySetBodyParameter(ParameterName.Type, _parameters, bodyDocument);
            // optional
            Request.TrySetBodyParameter(ParameterName.WaitForSync, _parameters, bodyDocument);
            // optional
            Request.TrySetBodyParameter(ParameterName.JournalSize, _parameters, bodyDocument);
            // optional
            Request.TrySetBodyParameter(ParameterName.DoCompact, _parameters, bodyDocument);
            // optional
            Request.TrySetBodyParameter(ParameterName.IsSystem, _parameters, bodyDocument);
            // optional
            Request.TrySetBodyParameter(ParameterName.IsVolatile, _parameters, bodyDocument);
            // optional
            Request.TrySetBodyParameter(ParameterName.KeyOptionsType, _parameters, bodyDocument);
            // optional
            Request.TrySetBodyParameter(ParameterName.KeyOptionsAllowUserKeys, _parameters, bodyDocument);
            // optional
            Request.TrySetBodyParameter(ParameterName.KeyOptionsIncrement, _parameters, bodyDocument);
            // optional
            Request.TrySetBodyParameter(ParameterName.KeyOptionsOffset, _parameters, bodyDocument);
            // optional
            Request.TrySetBodyParameter(ParameterName.NumberOfShards, _parameters, bodyDocument);
            // optional
            Request.TrySetBodyParameter(ParameterName.ShardKeys, _parameters, bodyDocument);

            request.Body = JSON.ToJSON(bodyDocument, ASettings.JsonParameters);

            var response = _connection.Send(request);
            var result = new AResult<Dictionary<string, object>>(response);

            switch (response.StatusCode)
            {
                case 200:
                    var body = response.ParseBody<Dictionary<string, object>>();

                    result.Success = (body != null);
                    result.Value = body;
                    break;
                default:
                    // Arango error
                    break;
            }

            _parameters.Clear();

            return result;
        }
Beispiel #49
0
 /// <summary>
 /// Creates index within specified collection in current database context.
 /// </summary>
 public AResult<Dictionary<string, object>> Create(string collectionName)
 {
     var request = new Request(HttpMethod.POST, ApiBaseUri.Index, "");
     var bodyDocument = new Dictionary<string, object>();
     
     // required
     request.QueryString.Add(ParameterName.Collection, collectionName);
     
     // required
     bodyDocument.String(ParameterName.Type, _parameters.String(ParameterName.Type));
     
     switch (_parameters.Enum<AIndexType>(ParameterName.Type))
     {
         case AIndexType.Cap:
             Request.TrySetBodyParameter(ParameterName.ByteSize, _parameters, bodyDocument);
             Request.TrySetBodyParameter(ParameterName.Size, _parameters, bodyDocument);
             break;
         case AIndexType.Fulltext:
             Request.TrySetBodyParameter(ParameterName.Fields, _parameters, bodyDocument);
             Request.TrySetBodyParameter(ParameterName.MinLength, _parameters, bodyDocument);
             break;
         case AIndexType.Geo:
             Request.TrySetBodyParameter(ParameterName.Fields, _parameters, bodyDocument);
             Request.TrySetBodyParameter(ParameterName.GeoJson, _parameters, bodyDocument);
             break;
         case AIndexType.Hash:
             Request.TrySetBodyParameter(ParameterName.Fields, _parameters, bodyDocument);
             Request.TrySetBodyParameter(ParameterName.Sparse, _parameters, bodyDocument);
             Request.TrySetBodyParameter(ParameterName.Unique, _parameters, bodyDocument);
             break;
         case AIndexType.Skiplist:
             Request.TrySetBodyParameter(ParameterName.Fields, _parameters, bodyDocument);
             Request.TrySetBodyParameter(ParameterName.Sparse, _parameters, bodyDocument);
             Request.TrySetBodyParameter(ParameterName.Unique, _parameters, bodyDocument);
             break;
         default:
             break;
     }
     
     request.Body = JSON.ToJSON(bodyDocument, ASettings.JsonParameters);
     
     var response = _connection.Send(request);
     var result = new AResult<Dictionary<string, object>>(response);
     
     switch (response.StatusCode)
     {
         case 200:
         case 201:
             if (response.DataType == DataType.Document)
             {
                 result.Value = (response.Data as Dictionary<string, object>);
                 result.Success = (result.Value != null);
             }
             break;
         case 400:
         case 404:
         default:
             // Arango error
             break;
     }
     
     _parameters.Clear();
     
     return result;
 }
        public void Should_create_edge()
        {
            Database.ClearTestCollection(Database.TestEdgeCollectionName);
            var db = new ADatabase(Database.Alias);

            var document = new Dictionary<string, object>()
                .String("foo", "foo string value")
                .Int("bar", 12345);

            var createResult = db.Edge
                .Create(Database.TestEdgeCollectionName, _documents[0].String("_id"), _documents[1].String("_id"), document);

            Assert.AreEqual(202, createResult.StatusCode);
            Assert.IsTrue(createResult.Success);
            Assert.IsTrue(createResult.HasValue);
            Assert.IsTrue(createResult.Value.IsString("_id"));
            Assert.IsTrue(createResult.Value.IsString("_key"));
            Assert.IsTrue(createResult.Value.IsString("_rev"));

            var getResult = db.Edge
                .Get(createResult.Value.String("_id"));

            Assert.AreEqual(200, getResult.StatusCode);
            Assert.IsTrue(getResult.Success);
            Assert.IsTrue(getResult.HasValue);
            Assert.AreEqual(getResult.Value.String("_id"), createResult.Value.String("_id"));
            Assert.AreEqual(getResult.Value.String("_key"), createResult.Value.String("_key"));
            Assert.AreEqual(getResult.Value.String("_rev"), createResult.Value.String("_rev"));
            Assert.IsTrue(getResult.Value.IsString("_from"));
            Assert.IsTrue(getResult.Value.IsString("_to"));
            Assert.AreEqual(getResult.Value.String("foo"), document.String("foo"));
            Assert.AreEqual(getResult.Value.Int("bar"), document.Int("bar"));
        }
        public void Should_replace_document_with_ifMatch_and_lastUpdatePolicy()
        {
            var documents = Database.ClearCollectionAndFetchTestDocumentData(Database.TestDocumentCollectionName);
            var db = new ADatabase(Database.Alias);

            var document = new Dictionary<string, object>()
                .String("foo", "some other new string")
                .Int("baz", 54321);

            var replaceResult = db.Document
                .IfMatch("123456789", AUpdatePolicy.Last)
                .Replace(documents[0].String("_id"), document);

            Assert.AreEqual(202, replaceResult.StatusCode);
            Assert.IsTrue(replaceResult.Success);
            Assert.IsTrue(replaceResult.HasValue);
            Assert.AreEqual(replaceResult.Value.String("_id"), documents[0].String("_id"));
            Assert.AreEqual(replaceResult.Value.String("_key"), documents[0].String("_key"));
            Assert.AreNotEqual(replaceResult.Value.String("_rev"), documents[0].String("_rev"));

            var getResult = db.Document
                .Get(replaceResult.Value.String("_id"));

            Assert.AreEqual(getResult.Value.String("_id"), replaceResult.Value.String("_id"));
            Assert.AreEqual(getResult.Value.String("_key"), replaceResult.Value.String("_key"));
            Assert.AreEqual(getResult.Value.String("_rev"), replaceResult.Value.String("_rev"));

            Assert.AreNotEqual(getResult.Value.String("foo"), documents[0].String("foo"));
            Assert.AreEqual(getResult.Value.String("foo"), document.String("foo"));

            Assert.AreEqual(getResult.Value.Int("baz"), document.Int("baz"));

            Assert.IsFalse(getResult.Value.Has("bar"));
        }