protected internal TableInfo Build(ISchemaProvider schemaProvider) { List <Column> cols = new List <Column>(); List <PostProcess> post = new List <PostProcess>(); foreach (ColumnBuilder columnBuilder in _columns) { Column col = columnBuilder.Build(this, schemaProvider, post); if (col.IsPrimaryKey) { _pkColumn = columnBuilder; } cols.Add(col); } schemaProvider.AddTable(_name, cols.ToArray()); foreach (PostProcess process in post) { process.Action(); } return(new TableInfo(_name, _pkColumn.Name, _pkColumn.ColumnType, _pkColumn.Size)); }
public void CheckSchemaInfoTable() { if (_schemaProvider.HasTable(TableName)) { if (!_schemaProvider.HasColumn(TableName, ScopeColumnName)) { _log.InfoFormat("Adding {0} column to {1}...", ScopeColumnName, TableName); _schemaProvider.AddColumn(TableName, ScopeColumnName, typeof(string), 25, false, true); } if (!_schemaProvider.IsColumnOfType(TableName, VersionColumnName, "bigint")) { _log.InfoFormat("Changing {0} column to {1}...", VersionColumnName, "bigint"); _schemaProvider.ChangeColumn(TableName, VersionColumnName, typeof(Int64), 8, false); } return; } _log.InfoFormat("Creating {0}...", TableName); var columns = new [] { new Column(IdColumnName, typeof(Int32), 4, true), new Column(VersionColumnName, typeof(Int64), 8, false), new Column(ScopeColumnName, typeof(string), 25, false, true) }; _schemaProvider.AddTable(TableName, columns); }
public void CheckSchemaInfoTable_DoesNotHaveTable_CreatesTable() { using (_mocks.Record()) { SetupResult.For(_schemaProvider.HasTable("schema_info")).Return(false); _schemaProvider.AddTable("schema_info", null); LastCall.IgnoreArguments(); } _target.CheckSchemaInfoTable(); _mocks.VerifyAll(); }