Beispiel #1
0
        public void GetAll()
        {
            var q   = new DynamicQuery().ToGetAll();
            var sql = q.ToSqlQuery();

            Assert.AreEqual("select * from c", sql);
        }
Beispiel #2
0
        public void GetFirstOrDefault()
        {
            var q   = new DynamicQuery().ToGetFirstOrDefault();
            var sql = q.ToSqlQuery();

            Assert.AreEqual("select top 1 * from c", sql);
        }
Beispiel #3
0
        public void NoParameters()
        {
            var q = new DynamicQuery <BaseEntity>("select * from c");

            var sql = q.ToSqlQuery();

            Assert.AreEqual("select * from c", sql);
        }
Beispiel #4
0
        public void EmptyList()
        {
            var q = new DynamicQuery <BaseEntity>("items in @ids", new { ids = new List <int>() });

            var sql = q.ToSqlQuery();

            Assert.AreEqual("items in (null)", sql);
        }
Beispiel #5
0
        public void Enum()
        {
            var q = new DynamicQuery <BaseEntity>("state = @state", new { state = State.Processing });

            var sql = q.ToSqlQuery();

            Assert.AreEqual("state = 20", sql);
        }
Beispiel #6
0
        public void Classic()
        {
            var q = new DynamicQuery <BaseEntity>("a = @a, b = @b, c = @c, d = @d, e = @e, f = @f", new { a = "!''!", b = "x", c = (string)null, d = true, e = 13, f = 13.99 });

            var sql = q.ToSqlQuery();

            Assert.AreEqual("a = '!\\'\\'!', b = 'x', c = null, d = true, e = 13, f = 13.99", sql);
        }
Beispiel #7
0
        async Task <bool> DeleteDocumentAsync(Entities.Document document)
        {
            var metaObj = JObject.FromObject(document.Meta);
            Dictionary <string, object> meta2 = metaObj.ToObject <Dictionary <string, object> >();

            await DeleteDocumentVersionsAsync(document).ConfigureAwait(false);

            var result = await _repoDocument.DeleteAsync(document.Id).ConfigureAwait(false);

            var nonIndexedFields = new List <string>();

            if (meta2 != null)
            {
                foreach (var key in meta2.Keys)
                {
                    var q = new DynamicQuery
                            (
                        "select count(1) as number from c where c.entity = @entity and c.instance = @instance " +
                        $"and c.projectId = @projectId and is_defined(c.meta[\"{key}\"])",
                        new
                    {
                        entity    = Entities.Document.Entity,
                        instance  = document.Instance,
                        projectId = document.ProjectId
                    }
                            );

                    var sql = q.ToSqlQuery();

                    var counts = await _repoDocumentCount.GetListAsync(q).ConfigureAwait(false);

                    var n = counts.Sum(x => x.Number);

                    if (n == 0)
                    {
                        nonIndexedFields.Add(key);
                    }
                }

                if (nonIndexedFields.Any())
                {
                    var docType = await FindDocumentTypeAsync(document.Instance, new Uri(document.ProjectId), new Uri(document.DocumentTypeId)).ConfigureAwait(false);

                    if (docType != null)
                    {
                        var indexes = docType.Indexes.ToList();

                        indexes.RemoveAll(i => nonIndexedFields.Any(i2 => i2.Equals(i.From, StringComparison.OrdinalIgnoreCase)));

                        docType.Indexes = indexes;

                        await _repoDocumentType.ReplaceAsync(docType).ConfigureAwait(false);
                    }
                }
            }

            return(result);
        }
Beispiel #8
0
        public void ListOfInts()
        {
            var ids = new List <int> {
                4, 5, 2
            };

            var q = new DynamicQuery <BaseEntity>("items in @ids", new { ids = ids });

            var sql = q.ToSqlQuery();

            Assert.AreEqual("items in (4,5,2)", sql);
        }
Beispiel #9
0
        public void Stamps()
        {
            var q = new DynamicQuery <BaseEntity>("epoch = @stamp, epoch2 in (@stamp2)", new
            {
                stamp  = new Stamp(new DateTime(2000, 1, 1)),
                stamp2 = new SimpleStamp(new DateTime(2001, 1, 1))
            });

            var sql = q.ToSqlQuery();

            Assert.AreEqual("epoch = 946684800, epoch2 in (9466848002)", sql);
        }
Beispiel #10
0
        public async Task <Project> GetProjectAsync(string instance, string id)
        {
            if (instance == null)
            {
                throw new ArgumentNullException(nameof(instance));
            }

            if (string.IsNullOrEmpty(id))
            {
                return(null);
            }

            var query   = new DynamicQuery("id eq @id", new { id });
            var complex = new ComplexQuery(null, query.ToSqlQuery(), 1, null, null, instance);
            var fin     = _translator.Translate(complex);

            var result = await GetFirstOrDefaultAsync(new DynamicQuery(fin)).ConfigureAwait(false);

            return(result);
        }