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; }
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); }
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() )); }
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); }
public void LoadIndex() { var list = JsonConvert.DeserializeObject <List <JObject> >(File.ReadAllText(indexFile.FullName)); Index = new DummyIndex(list); }