Esempio n. 1
0
        private static string RenderIndexLine(IRelationalDatabaseTable table, IDatabaseIndex index)
        {
            if (table == null)
            {
                throw new ArgumentNullException(nameof(table));
            }
            if (index == null)
            {
                throw new ArgumentNullException(nameof(index));
            }

            var columns = index.Columns.Count > 1
                ? "(" + index.Columns.Select(ic => ic.Expression).Join(", ").RemoveQuotingCharacters() + ")"
                : index.Columns.Single().Expression.RemoveQuotingCharacters();

            var options = new List <string> {
                "name: '" + index.Name.ToVisibleName() + "'"
            };

            if (index.IsUnique)
            {
                options.Add("unique");
            }

            return(Indent + Indent + columns + " "
                   + "[" + options.Join(", ") + "]");
        }
 public void LoadIndex()
 {
     lock (locker)
     {
         var rawData   = indexFile.Exists ? File.ReadAllText(indexFile.FullName) : "[]";
         var indexList = JsonConvert.DeserializeObject <List <JObject> >(rawData);
         index = new DatabaseIndex <T>(indexList);
     }
 }
        public void RebuildIndex()
        {
            if (disposed)
            {
                throw new ObjectDisposedException(nameof(DatabaseProcessor <T>));
            }

            lock (locker)
            {
                index = new DatabaseIndex <T>(this);
            }
        }
        public void Dispose()
        {
            if (!disposed && index != null && indexFile != null)
            {
                SaveIndex();
            }

            disposed      = true;
            locker        = null;
            database      = null;
            index         = null;
            indexFile     = null;
            dataDirectory = null;
        }
Esempio n. 5
0
        public static void Ctor_GivenIndexesWithNullValue_ThrowsArgumentNullException()
        {
            Identifier tableName  = "test_table";
            var        columns    = new[] { Mock.Of <IDatabaseColumn>() };
            var        primaryKey = Option <IDatabaseKey> .None;
            var        uniqueKeys = Array.Empty <IDatabaseKey>();
            var        parentKeys = Array.Empty <IDatabaseRelationalKey>();
            var        childKeys  = Array.Empty <IDatabaseRelationalKey>();
            var        indexes    = new IDatabaseIndex[] { null };
            var        checks     = Array.Empty <IDatabaseCheckConstraint>();
            var        triggers   = Array.Empty <IDatabaseTrigger>();

            Assert.That(() => new RelationalDatabaseTable(tableName, columns, primaryKey, uniqueKeys, parentKeys, childKeys, indexes, checks, triggers), Throws.ArgumentNullException);
        }
Esempio n. 6
0
        public Indexes.Index Map(Identifier parent, IDatabaseIndex index)
        {
            if (parent == null)
            {
                throw new ArgumentNullException(nameof(parent));
            }
            if (index == null)
            {
                throw new ArgumentNullException(nameof(index));
            }

            return(new Indexes.Index(
                       index.Name?.LocalName,
                       parent,
                       index.IsUnique,
                       index.Columns.Select(c => c.Expression).ToList(),
                       index.Columns.Select(c => c.Order).ToList(),
                       index.IncludedColumns.Select(c => c.Name.LocalName).ToList()
                       ));
        }
Esempio n. 7
0
        private InvocationExpressionSyntax BuildTableIndexForBuilder(IRelationalDatabaseTable table, IDatabaseIndex index)
        {
            if (table == null)
            {
                throw new ArgumentNullException(nameof(table));
            }
            if (index == null)
            {
                throw new ArgumentNullException(nameof(index));
            }

            var columns            = index.Columns.SelectMany(c => c.DependentColumns).ToList();
            var schemaNamespace    = NameTranslator.SchemaToNamespace(table.Name);
            var className          = NameTranslator.TableToClassName(table.Name);
            var qualifiedClassName = !schemaNamespace.IsNullOrWhiteSpace()
                ? schemaNamespace + "." + className
                : className;

            var entity       = GetEntityBuilder(qualifiedClassName);
            var indexBuilder = InvocationExpression(
                MemberAccessExpression(
                    SyntaxKind.SimpleMemberAccessExpression,
                    entity,
                    IdentifierName(nameof(EntityTypeBuilder.HasIndex))))
                               .WithArgumentList(
                ArgumentList(
                    SingletonSeparatedList(
                        Argument(
                            GenerateColumnSet(className, columns, false)))));

            if (index.IsUnique)
            {
                indexBuilder = InvocationExpression(
                    MemberAccessExpression(
                        SyntaxKind.SimpleMemberAccessExpression,
                        indexBuilder,
                        IdentifierName(nameof(IndexBuilder.IsUnique))));
            }

            if (index.Name != null)
            {
                indexBuilder = InvocationExpression(
                    MemberAccessExpression(
                        SyntaxKind.SimpleMemberAccessExpression,
                        indexBuilder,
                        IdentifierName(nameof(RelationalIndexBuilderExtensions.HasName))))
                               .WithArgumentList(
                    ArgumentList(
                        SingletonSeparatedList(
                            Argument(
                                LiteralExpression(
                                    SyntaxKind.StringLiteralExpression,
                                    Literal(index.Name.LocalName))))));
            }

            return(indexBuilder);
        }
Esempio n. 8
0
            public void LoadIndex()
            {
                var list = JsonConvert.DeserializeObject <List <JObject> >(File.ReadAllText(indexFile.FullName));

                Index = new DummyIndex(list);
            }