public override void Drop(IStructureSchema structureSchema) { Ensure.That(structureSchema, "structureSchema").IsNotNull(); var modelInfo = GetModelTablesInfo(structureSchema); var sqlDropTableFormat = SqlStatements.GetSql("DropTable"); using (var cmd = CreateCommand(string.Empty, new DacParameter(DbSchemaInfo.Parameters.EntityNameParamPrefix, structureSchema.Name))) { DropIndexesTables(cmd, modelInfo.Statuses.IndexesTableStatuses, modelInfo.Names.IndexesTableNames); if (modelInfo.Statuses.UniquesTableExists) { cmd.CommandText = sqlDropTableFormat.Inject(structureSchema.GetUniquesTableName()); cmd.ExecuteNonQuery(); } if (modelInfo.Statuses.SpatialTableExists) { cmd.CommandText = sqlDropTableFormat.Inject(structureSchema.GetStructureTableName()); cmd.ExecuteNonQuery(); } if (modelInfo.Statuses.StructureTableExists) { cmd.CommandText = sqlDropTableFormat.Inject(structureSchema.GetStructureTableName()); cmd.ExecuteNonQuery(); } cmd.CommandText = SqlStatements.GetSql("DeleteStructureFromSisoDbIdentitiesTable"); cmd.ExecuteNonQuery(); } }
public virtual bool UniquesTableHasMember <T>(IStructureSchema structureSchema, object id, Expression <Func <T, object> > member) where T : class { var memberPath = GetMemberPath(member); var sql = "[{0}] = @pStructureId and [{1}] = @pPath".Inject(UniqueStorageSchema.Fields.StructureId.Name, UniqueStorageSchema.Fields.UqMemberPath.Name); return(RowCount(structureSchema.GetUniquesTableName(), sql, new DacParameter("pStructureId", id), new DacParameter("pPath", memberPath)) > 0); }
protected virtual void BulkInsertUniques(IStructureSchema structureSchema, IStructureIndex[] uniques) { if (!uniques.Any()) { return; } var uniquesStorageSchema = new UniqueStorageSchema(structureSchema, structureSchema.GetUniquesTableName()); using (var uniquesReader = new UniquesReader(uniquesStorageSchema, uniques)) { using (var bulkInserter = MainDbClient.GetBulkCopy()) { bulkInserter.DestinationTableName = uniquesReader.StorageSchema.Name; bulkInserter.BatchSize = uniques.Length; var fields = uniquesReader.StorageSchema.GetFieldsOrderedByIndex().Where(f => !f.Equals(StructureStorageSchema.Fields.RowId)).ToArray(); foreach (var field in fields) { bulkInserter.AddColumnMapping(field.Name, field.Name); } bulkInserter.Write(uniquesReader); } } }
private void DeleteRecordsMatchingKeyNames(IStructureSchema structureSchema, IEnumerable<string> names) { var inString = string.Join(",", names.Select(n => "'" + n + "'")); var sql = _sqlStrings.GetSql("UniquesSchemaSynchronizer_DeleteRecordsMatchingKeyNames") .Inject(structureSchema.GetUniquesTableName(), UniqueStorageSchema.Fields.Name.Name, inString); _dbClient.ExecuteNonQuery(CommandType.Text, sql); }
private void DeleteRecordsMatchingKeyNames(IStructureSchema structureSchema, IEnumerable<string> names, IDbClient dbClient) { var inString = string.Join(",", names.Select(n => "'" + n + "'")); var sql = _sqlStatements.GetSql("UniquesSchemaSynchronizer_DeleteRecordsMatchingKeyNames") .Inject(structureSchema.GetUniquesTableName(), UniqueStorageSchema.Fields.UqMemberPath.Name, inString); dbClient.ExecuteNonQuery(sql); }
private void DeleteRecordsMatchingKeyNames(IStructureSchema structureSchema, IEnumerable <string> names, IDbClient dbClient) { var inString = string.Join(",", names.Select(n => "'" + n + "'")); var sql = _sqlStatements.GetSql("UniquesSchemaSynchronizer_DeleteRecordsMatchingKeyNames") .Inject(structureSchema.GetUniquesTableName(), UniqueStorageSchema.Fields.UqMemberPath.Name, inString); dbClient.ExecuteNonQuery(sql); }
public string GenerateSql(IStructureSchema structureSchema) { var sql = structureSchema.IdAccessor.IdType == IdTypes.Guid ? _sqlStrings.GetSql("CreateUniquesGuid") : _sqlStrings.GetSql("CreateUniquesIdentity"); return sql.Inject( structureSchema.GetStructureTableName(), structureSchema.GetUniquesTableName()); }
private IEnumerable<string> GetExistingDbKeyNames(IStructureSchema structureSchema, IDbClient dbClient) { var dbColumns = new List<string>(); dbClient.Read( _sqlStatements.GetSql("UniquesSchemaSynchronizer_GetKeyNames").Inject( UniqueStorageSchema.Fields.UqMemberPath.Name, structureSchema.GetUniquesTableName()), dr => dbColumns.Add(dr.GetString(0))); return dbColumns; }
private IEnumerable <string> GetExistingDbKeyNames(IStructureSchema structureSchema, IDbClient dbClient) { var dbColumns = new List <string>(); dbClient.SingleResultSequentialReader( _sqlStatements.GetSql("UniquesSchemaSynchronizer_GetKeyNames").Inject( UniqueStorageSchema.Fields.UqMemberPath.Name, structureSchema.GetUniquesTableName()), dr => dbColumns.Add(dr.GetString(0))); return(dbColumns); }
private IEnumerable<string> GetKeyNames(IStructureSchema structureSchema) { var dbColumns = new List<string>(); _dbClient.ExecuteSingleResultReader(CommandType.Text, _sqlStrings.GetSql("UniquesSchemaSynchronizer_GetKeyNames") .Inject( UniqueStorageSchema.Fields.Name.Name, structureSchema.GetUniquesTableName()), dr => dbColumns.Add(dr.GetString(0))); return dbColumns; }
public void Upsert(IStructureSchema structureSchema) { var structuresTableName = structureSchema.GetStructureTableName(); var indexesTableName = structureSchema.GetIndexesTableName(); var uniquesTableName = structureSchema.GetUniquesTableName(); var structuresTableExists = _dbClient.TableExists(structuresTableName); var indexesTableExists = _dbClient.TableExists(indexesTableName); var uniquesTableExists = _dbClient.TableExists(uniquesTableName); if (structuresTableExists && indexesTableExists && uniquesTableExists) { _indexesDbSchemaSynchronizer.Synchronize(structureSchema); _uniquesDbSchemaSynchronizer.Synchronize(structureSchema); return; } var structuresSql = structuresTableExists ? "" : _structuresDbSchemaBuilder.GenerateSql(structureSchema); var indexesSql = indexesTableExists ? "" : _indexesDbSchemaBuilder.GenerateSql(structureSchema); var uniquesSql = uniquesTableExists ? "" : _uniquesDbSchemaBuilder.GenerateSql(structureSchema); using (var cmd = _dbClient.CreateCommand(CommandType.Text, null, new QueryParameter("entityHash", structureSchema.Hash), new QueryParameter("entityName", structureSchema.Name))) { if (!structuresTableExists) { cmd.CommandText = structuresSql; cmd.ExecuteNonQuery(); } if (!indexesTableExists) { cmd.CommandText = indexesSql; cmd.ExecuteNonQuery(); } else _indexesDbSchemaSynchronizer.Synchronize(structureSchema); if (!uniquesTableExists) { cmd.CommandText = uniquesSql; cmd.ExecuteNonQuery(); } else _uniquesDbSchemaSynchronizer.Synchronize(structureSchema); } }
public string GenerateSql(IStructureSchema structureSchema) { var uniquesTableName = structureSchema.GetUniquesTableName(); var structureTableName = structureSchema.GetStructureTableName(); if (structureSchema.IdAccessor.IdType == StructureIdTypes.String) return _sqlStatements.GetSql("CreateUniquesString").Inject(uniquesTableName, structureTableName); if (structureSchema.IdAccessor.IdType == StructureIdTypes.Guid) return _sqlStatements.GetSql("CreateUniquesGuid").Inject(uniquesTableName, structureTableName); if (structureSchema.IdAccessor.IdType.IsIdentity()) return _sqlStatements.GetSql("CreateUniquesIdentity").Inject(uniquesTableName, structureTableName); throw new SisoDbException(ExceptionMessages.SqlDbUniquesSchemaBuilder_GenerateSql.Inject(structureSchema.IdAccessor.IdType)); }
public virtual void DeleteIndexesAndUniquesById(IStructureId structureId, IStructureSchema structureSchema) { Ensure.That(structureSchema, "structureSchema").IsNotNull(); var indexesTableNames = structureSchema.GetIndexesTableNames(); var uniquesTableName = structureSchema.GetUniquesTableName(); var sql = StringExtensions.Inject(SqlStatements.GetSql("DeleteIndexesAndUniquesById"), uniquesTableName, indexesTableNames.BooleansTableName, indexesTableNames.DatesTableName, indexesTableNames.FractalsTableName, indexesTableNames.GuidsTableName, indexesTableNames.IntegersTableName, indexesTableNames.StringsTableName, indexesTableNames.TextsTableName); ExecuteNonQuery(sql, new DacParameter("id", structureId.Value)); }
public virtual void SingleInsertOfUniqueIndex(IStructureIndex uniqueStructureIndex, IStructureSchema structureSchema) { var sql = SqlStatements.GetSql("SingleInsertOfUniqueIndex").Inject( structureSchema.GetUniquesTableName(), UniqueStorageSchema.Fields.StructureId.Name, UniqueStorageSchema.Fields.UqStructureId.Name, UniqueStorageSchema.Fields.UqMemberPath.Name, UniqueStorageSchema.Fields.UqValue.Name); var parameters = new DacParameter[4]; parameters[0] = new DacParameter(UniqueStorageSchema.Fields.StructureId.Name, uniqueStructureIndex.StructureId.Value); parameters[1] = (uniqueStructureIndex.IndexType == StructureIndexType.UniquePerType) ? new DacParameter(UniqueStorageSchema.Fields.UqStructureId.Name, DBNull.Value) : new DacParameter(UniqueStorageSchema.Fields.UqStructureId.Name, uniqueStructureIndex.StructureId.Value); parameters[2] = new DacParameter(UniqueStorageSchema.Fields.UqMemberPath.Name, uniqueStructureIndex.Path); parameters[3] = new DacParameter(UniqueStorageSchema.Fields.UqValue.Name, UniquesChecksumGenerator.Instance.Generate(uniqueStructureIndex)); ExecuteNonQuery(sql, parameters); }
public string GenerateSql(IStructureSchema structureSchema) { var uniquesTableName = structureSchema.GetUniquesTableName(); var structureTableName = structureSchema.GetStructureTableName(); if (structureSchema.IdAccessor.IdType == StructureIdTypes.String) { return(_sqlStatements.GetSql("CreateUniquesString").Inject(uniquesTableName, structureTableName)); } if (structureSchema.IdAccessor.IdType == StructureIdTypes.Guid) { return(_sqlStatements.GetSql("CreateUniquesGuid").Inject(uniquesTableName, structureTableName)); } if (structureSchema.IdAccessor.IdType.IsIdentity()) { return(_sqlStatements.GetSql("CreateUniquesIdentity").Inject(uniquesTableName, structureTableName)); } throw new SisoDbException(ExceptionMessages.SqlDbUniquesSchemaBuilder_GenerateSql.Inject(structureSchema.IdAccessor.IdType)); }
public override void Drop(IStructureSchema structureSchema) { Ensure.That(structureSchema, "structureSchema").IsNotNull(); var indexesTableNames = structureSchema.GetIndexesTableNames(); var sql = SqlStatements.GetSql("DropStructureTables").Inject( indexesTableNames.IntegersTableName, indexesTableNames.FractalsTableName, indexesTableNames.BooleansTableName, indexesTableNames.DatesTableName, indexesTableNames.GuidsTableName, indexesTableNames.StringsTableName, indexesTableNames.TextsTableName, structureSchema.GetUniquesTableName(), structureSchema.GetStructureTableName()); using (var cmd = CreateCommand(sql, new DacParameter("entityName", structureSchema.Name))) { cmd.ExecuteNonQuery(); } }
public override void Drop(IStructureSchema structureSchema) { Ensure.That(structureSchema, "structureSchema").IsNotNull(); var modelInfo = GetModelTablesInfo(structureSchema); var sqlDropTableFormat = SqlStatements.GetSql("DropTable"); using (var cmd = CreateCommand(string.Empty, new DacParameter(DbSchemas.Parameters.EntityNameParamPrefix, structureSchema.Name))) { DropIndexesTables(cmd, modelInfo.Statuses.IndexesTableStatuses, modelInfo.Names.IndexesTableNames); if (modelInfo.Statuses.UniquesTableExists) { cmd.CommandText = sqlDropTableFormat.Inject(structureSchema.GetUniquesTableName()); cmd.ExecuteNonQuery(); } if (modelInfo.Statuses.StructureTableExists) { cmd.CommandText = sqlDropTableFormat.Inject(structureSchema.GetStructureTableName()); cmd.ExecuteNonQuery(); } cmd.CommandText = SqlStatements.GetSql("DeleteStructureFromSisoDbIdentitiesTable"); cmd.ExecuteNonQuery(); } }
public static void should_not_have_been_deleted_from_uniques_table(this ITestDbUtils db, IStructureSchema structureSchema, object structureId) { db.RowCount(structureSchema.GetUniquesTableName(), "{0} = '{1}'".Inject(UniqueStorageSchema.Fields.StructureId.Name, structureId)).ShouldEqual(1); }
internal UniqueStorageSchema(IStructureSchema structureSchema) : base(structureSchema, structureSchema.GetUniquesTableName()) { }
protected virtual void BulkInsertUniques(IStructureSchema structureSchema, IStructureIndex[] uniques) { if (!uniques.Any()) return; var uniquesStorageSchema = new UniqueStorageSchema(structureSchema, structureSchema.GetUniquesTableName()); using (var uniquesReader = new UniquesReader(uniquesStorageSchema, uniques)) { using (var bulkInserter = MainDbClient.GetBulkCopy()) { bulkInserter.DestinationTableName = uniquesReader.StorageSchema.Name; bulkInserter.BatchSize = uniques.Length; var fields = uniquesReader.StorageSchema.GetFieldsOrderedByIndex().Where(f => !f.Equals(StructureStorageSchema.Fields.RowId)).ToArray(); foreach (var field in fields) bulkInserter.AddColumnMapping(field.Name, field.Name); bulkInserter.Write(uniquesReader); } } }