private string HistorySqlSnippet() { return(string.Format( @"SELECT ID = entity.ID, EntityID = entity.ID, ActiveUntil = CAST(NULL AS DateTime){5} FROM {0}.{1} entity UNION ALL SELECT ID = history.ID, EntityID = history.EntityID, au.ActiveUntil{4} FROM {0}.{2} history LEFT JOIN {0}.{3} au ON au.ID = history.ID", SqlUtility.Identifier(Entity.Module.Name), SqlUtility.Identifier(Entity.Name), SqlUtility.Identifier(Dependency_ChangesEntity.Name), SqlUtility.Identifier(Entity.Name + "_ChangesActiveUntil"), SelectHistoryPropertiesTag.Evaluate(this), SelectEntityPropertiesTag.Evaluate(this))); }
private string HistorySqlSnippet(EntityHistoryInfo conceptInfo) { return(string.Format( @"SELECT ID = entity.ID, EntityID = entity.ID, ActiveUntil = CAST(NULL AS {6}){5} FROM {0}.{1} entity UNION ALL SELECT ID = history.ID, EntityID = history.EntityID, au.ActiveUntil{4} FROM {0}.{2} history LEFT JOIN {0}.{3} au ON au.ID = history.ID", SqlUtility.Identifier(conceptInfo.Entity.Module.Name), SqlUtility.Identifier(conceptInfo.Entity.Name), SqlUtility.Identifier(conceptInfo.Dependency_ChangesEntity.Name), SqlUtility.Identifier(conceptInfo.Entity.Name + "_ChangesActiveUntil"), SelectHistoryPropertiesTag.Evaluate(conceptInfo), SelectEntityPropertiesTag.Evaluate(conceptInfo), _dateTimeSqlColumnType)); }
public void ExtendDatabaseStructure(IConceptInfo conceptInfo, ICodeBuilder codeBuilder, out System.Collections.Generic.IEnumerable <Tuple <IConceptInfo, IConceptInfo> > createdDependencies) { var info = (SqlNotNullInfo)conceptInfo; var sql = new StringBuilder(); if (_conceptMetadata.Contains(info.Property, PropertyDatabaseDefinition.ColumnTypesMetadata)) { var columnNames = _conceptMetadata.Get(info.Property, PropertyDatabaseDefinition.ColumnNamesMetadata); var columnTypes = _conceptMetadata.Get(info.Property, PropertyDatabaseDefinition.ColumnTypesMetadata); var columns = columnNames.Zip(columnTypes, (name, type) => new { name, type }); foreach (var column in columns) { sql.AppendLine(Sql.Format("SqlNotNull_Create", SqlUtility.Identifier(info.Property.DataStructure.Module.Name), SqlUtility.Identifier(info.Property.DataStructure.Name), column.name, column.type, info.InitialValueSqlExpression, SqlUtility.ScriptSplitterTag).Trim()); } } var sqlSnippet = sql.ToString().Trim() + "\r\n"; if (!string.IsNullOrWhiteSpace(sqlSnippet)) { codeBuilder.InsertCode(sqlSnippet, PropertyDatabaseDefinition.AfterCreateTag, info.Property); } createdDependencies = null; }
public static string GetConstraintName(ReferencePropertyInfo info) { return(SqlUtility.Identifier(Sql.Format("ReferencePropertyConstraintDatabaseDefinition_ConstraintName", info.DataStructure.Name, info.Referenced.Name, info.Name))); }
/// <summary> /// Note: When using this function to create a database object, always add the dependencies from GetAdditionalForeignKeyDependencies(). /// </summary> public static string GetSchemaTableForForeignKey(DataStructureInfo dataStructure) { if (dataStructure is EntityInfo) { return(SqlUtility.Identifier(dataStructure.Module.Name) + "." + SqlUtility.Identifier(dataStructure.Name)); } if (dataStructure is LegacyEntityInfo) { var legacy = (LegacyEntityInfo)dataStructure; return(SqlUtility.GetFullName(legacy.Table)); } if (dataStructure is LegacyEntityWithAutoCreatedViewInfo) { var legacy = (LegacyEntityWithAutoCreatedViewInfo)dataStructure; return(SqlUtility.GetFullName(legacy.Table)); } if (dataStructure is PolymorphicInfo) { return(dataStructure.GetKeyProperties() + "_Materialized"); } return(null); }
public static string GetTriggerNameDelete(EntityLoggingInfo conceptInfo) { return(SqlUtility.Identifier(Sql.Format( "EntityLoggingDefinition_TriggerNameDelete", conceptInfo.Entity.Module.Name, conceptInfo.Entity.Name))); }
public static string RemoveColumn(PropertyInfo property, string columnName) { return(Sql.Format("PropertyDatabaseDefinition_RemoveColumn", SqlUtility.Identifier(property.DataStructure.Module.Name), SqlUtility.Identifier(property.DataStructure.Name), DslUtility.ValidateIdentifier(columnName, property, "Invalid column name."), BeforeRemoveTag.Evaluate(property)).Trim()); }
private static string GetColumnName(PropertyInfo property) { if (property is ReferencePropertyInfo) { return(SqlUtility.Identifier(property.Name + "ID")); } return(SqlUtility.Identifier(property.Name)); }
public string RemoveDatabaseStructure(IConceptInfo conceptInfo) { var info = (SqlViewInfo)conceptInfo; return(Sql.Format("SqlViewDatabaseDefinition_Remove", SqlUtility.Identifier(info.Module.Name), SqlUtility.Identifier(info.Name))); }
public static string ConstraintName(SqlIndexMultipleInfo info) { var cleanColumnNames = info.PropertyNames.Split(' ').Select(name => name.Trim()).ToArray(); var joinedColumnNames = string.Join("_", cleanColumnNames.Select(CsUtility.TextToIdentifier)); var basicConstraintName = Sql.Format("SqlIndexMultipleDatabaseDefinition_ConstraintName", info.DataStructure.Name, joinedColumnNames); return(SqlUtility.Identifier(basicConstraintName)); }
public string RemoveDatabaseStructure(IConceptInfo conceptInfo) { var info = (ReferencePropertyDbConstraintInfo)conceptInfo; var reference = info.Reference; return(Sql.Format("ReferencePropertyConstraintDatabaseDefinition_Remove", SqlUtility.Identifier(reference.DataStructure.Module.Name) + "." + SqlUtility.Identifier(reference.DataStructure.Name), GetConstraintName(reference))); }
public static string TriggerSnippet(AutoCodeTriggerInfo info) { return(Sql.Format("AutoCodeDatabaseDefinition_TriggerSnippet", SqlUtility.Identifier(info.Entity.Module.Name), info.Entity.Name, TriggerName(info.Entity), ShortStringPropertyInfo.MaxLength, ColumnsForAutoCodeSelectTag.Evaluate(info))); }
public string CreateDatabaseStructure(IConceptInfo conceptInfo) { var info = (SqlQueryableInfo)conceptInfo; return(Sql.Format("SqlQueryableDatabaseDefinition_Create", SqlUtility.Identifier(info.Module.Name), SqlUtility.Identifier(info.Name), info.SqlSource)); }
public string RemoveDatabaseStructure(IConceptInfo conceptInfo) { var info = (SqlTriggerInfo)conceptInfo; var orm = (IOrmDataStructure)info.Structure; return(Sql.Format("SqlTriggerDatabaseDefinition_Remove", SqlUtility.Identifier(orm.GetOrmSchema()), TriggerName(info))); }
public void ExtendDatabaseStructure(IConceptInfo conceptInfo, ICodeBuilder codeBuilder, out IEnumerable <Tuple <IConceptInfo, IConceptInfo> > createdDependencies) { var info = (LegacyPropertyReferenceInfo)conceptInfo; createdDependencies = null; var sourceColumns = info.Columns.Split(',').Select(s => s.Trim()).Select(s => SqlUtility.Identifier(s)).ToArray(); var refColumns = info.ReferencedColumns.Split(',').Select(s => s.Trim()).Select(s => SqlUtility.Identifier(s)).ToArray(); if (sourceColumns.Length != refColumns.Length) { throw new DslSyntaxException("Count of references columns does not match count of source columns in " + info.GetUserDescription() + ". " + "There are " + sourceColumns.Length + " source columns and " + refColumns.Length + " referenced columns."); } string refAlias = SqlUtility.Identifier("ref" + _uniqueNum++); // Add column to view: codeBuilder.InsertCode(Sql.Format("LegacyPropertyReferenceDatabaseDefinition_ExtendViewSelect", SqlUtility.Identifier(info.Property.Name), refAlias), LegacyEntityWithAutoCreatedViewDatabaseDefinition.ViewSelectPartTag, info.Dependency_LegacyEntityWithAutoCreatedView); var allColumnsEqual = string.Join(" AND ", sourceColumns.Zip(refColumns, (sCol, rCol) => Sql.Format("LegacyPropertyReferenceDatabaseDefinition_ExtendFromJoin", refAlias, rCol, sCol))); codeBuilder.InsertCode(Sql.Format("LegacyPropertyReferenceDatabaseDefinition_ExtendViewFrom", SqlUtility.GetFullName(info.ReferencedTable), refAlias, allColumnsEqual), LegacyEntityWithAutoCreatedViewDatabaseDefinition.ViewFromPartTag, info.Dependency_LegacyEntityWithAutoCreatedView); // Add columns to instead-of trigger: foreach (var fkColumn in sourceColumns.Zip(refColumns, Tuple.Create)) { codeBuilder.InsertCode(Sql.Format("LegacyPropertyReferenceDatabaseDefinition_ExtendTriggerInsert", fkColumn.Item1), LegacyEntityWithAutoCreatedViewDatabaseDefinition.TriggerInsertPartTag, info.Dependency_LegacyEntityWithAutoCreatedView); codeBuilder.InsertCode(Sql.Format("LegacyPropertyReferenceDatabaseDefinition_ExtendTriggerSelectForInsert", fkColumn.Item1, refAlias, fkColumn.Item2, SqlUtility.GetFullName(info.ReferencedTable), SqlUtility.Identifier(info.Property.Name)), LegacyEntityWithAutoCreatedViewDatabaseDefinition.TriggerSelectForInsertPartTag, info.Dependency_LegacyEntityWithAutoCreatedView); codeBuilder.InsertCode(Sql.Format("LegacyPropertyReferenceDatabaseDefinition_ExtendTriggerSelectForUpdate", fkColumn.Item1, refAlias, fkColumn.Item2, SqlUtility.GetFullName(info.ReferencedTable), SqlUtility.Identifier(info.Property.Name)), LegacyEntityWithAutoCreatedViewDatabaseDefinition.TriggerSelectForUpdatePartTag, info.Dependency_LegacyEntityWithAutoCreatedView); } codeBuilder.InsertCode( Sql.Format("LegacyPropertyReferenceDatabaseDefinition_ExtendTriggerFrom", SqlUtility.GetFullName(info.ReferencedTable), refAlias, SqlUtility.Identifier(info.Property.Name)), LegacyEntityWithAutoCreatedViewDatabaseDefinition.TriggerFromPartTag, info.Dependency_LegacyEntityWithAutoCreatedView); }
public string RemoveDatabaseStructure(IConceptInfo conceptInfo) { var info = (EntityInfo)conceptInfo; return(Sql.Format("EntityDatabaseDefinition_Remove", SqlUtility.Identifier(info.Module.Name), SqlUtility.Identifier(info.Name), PrimaryKeyConstraintName(info), DefaultConstraintName(info))); }
public string RemoveDatabaseStructure(IConceptInfo conceptInfo) { var info = (DatePropertyInfo)conceptInfo; if (info.DataStructure is EntityInfo) { return(PropertyDatabaseDefinition.RemoveColumn(info, SqlUtility.Identifier(info.Name))); } return(""); }
public string CreateDatabaseStructure(IConceptInfo conceptInfo) { var info = (SqlViewInfo)conceptInfo; return(Sql.Format("SqlViewDatabaseDefinition_Create", SqlUtility.Identifier(info.Module.Name), SqlUtility.Identifier(info.Name), info.ViewSource, SqlUtility.ScriptSplitterTag)); }
public void ExtendDatabaseStructure(IConceptInfo conceptInfo, ICodeBuilder codeBuilder, out IEnumerable <Tuple <IConceptInfo, IConceptInfo> > createdDependencies) { var info = (LegacyPropertyReadOnlyInfo)conceptInfo; createdDependencies = null; codeBuilder.InsertCode( Sql.Format("LegacyPropertyReadOnlyDatabaseDefinition_ViewSelect", SqlUtility.Identifier(info.Property.Name), SqlUtility.Identifier(info.Column)), LegacyEntityWithAutoCreatedViewDatabaseDefinition.ViewSelectPartTag, info.Dependency_LegacyEntityWithAutoCreatedView); }
public string RemoveDatabaseStructure(IConceptInfo conceptInfo) { var info = (EntityLoggingInfo)conceptInfo; return(Sql.Format("EntityLoggingDefinition_Remove", SqlUtility.Identifier(info.Entity.Module.Name), GetTriggerNameInsert(info), GetTriggerNameUpdate(info), GetTriggerNameDelete(info))); }
public string RemoveDatabaseStructure(IConceptInfo conceptInfo) { var info = (LegacyEntityWithAutoCreatedViewInfo)conceptInfo; return(Sql.Format("LegacyEntityWithAutoCreatedViewDatabaseDefinition_Remove", SqlUtility.Identifier(info.Module.Name), SqlUtility.Identifier(info.Name), InsertTriggerName(info), UpdateTriggerName(info), DeleteTriggerName(info))); }
private static void InsertCode(ICodeBuilder codeBuilder, LoggingRelatedItemInfo info, string sqlResource, SqlTag <EntityLoggingInfo> tag) { string codeSnippet = Sql.Format(sqlResource, GetTempColumnNameOld(info), GetTempColumnNameNew(info), info.Table, SqlUtility.Identifier(info.Column), SqlUtility.QuoteText(info.Relation)); codeBuilder.InsertCode(codeSnippet, tag, info.Logging); }
public string RemoveDatabaseStructure(IConceptInfo conceptInfo) { var info = (UniqueReferenceInfo)conceptInfo; if (IsSupported(info)) { return(Sql.Format("UniqueReferenceDatabaseDefinition_Remove", SqlUtility.Identifier(info.Extension.Module.Name) + "." + SqlUtility.Identifier(info.Extension.Name), GetConstraintName(info))); } return(""); }
public string CreateDatabaseStructure(IConceptInfo conceptInfo) { var info = (SqlTriggerInfo)conceptInfo; var orm = (IOrmDataStructure)info.Structure; return(Sql.Format("SqlTriggerDatabaseDefinition_Create", SqlUtility.Identifier(orm.GetOrmSchema()), TriggerName(info), SqlUtility.Identifier(orm.GetOrmDatabaseObject()), info.Events, info.TriggerSource)); }
public string CreateDatabaseStructure(IConceptInfo conceptInfo) { var info = (ReferencePropertyDbConstraintInfo)conceptInfo; var reference = info.Reference; return(Sql.Format("ReferencePropertyConstraintDatabaseDefinition_Create", SqlUtility.Identifier(reference.DataStructure.Module.Name) + "." + SqlUtility.Identifier(reference.DataStructure.Name), GetConstraintName(reference), reference.GetColumnName(), ForeignKeyUtility.GetSchemaTableForForeignKey(reference.Referenced), ForeignKeyConstraintOptions.Evaluate(info))); }
public string RemoveDatabaseStructure(IConceptInfo conceptInfo) { var info = (DataStructureExtendsInfo)conceptInfo; if (ShouldCreateConstraint(info)) { return(Sql.Format("DataStructureExtendsDatabaseDefinition_Remove", SqlUtility.Identifier(info.Extension.Module.Name) + "." + SqlUtility.Identifier(info.Extension.Name), GetConstraintName(info))); } return(""); }
public string RemoveDatabaseStructure(IConceptInfo conceptInfo) { var info = (ReferencePropertyInfo)conceptInfo; if (IsSupported(info)) { return(Sql.Format("ReferencePropertyConstraintDatabaseDefinition_Remove", SqlUtility.Identifier(info.DataStructure.Module.Name) + "." + SqlUtility.Identifier(info.DataStructure.Name), GetConstraintName(info))); } return(""); }
public string CreateDatabaseStructure(IConceptInfo conceptInfo) { var info = (MoneyPropertyInfo)conceptInfo; SqlUtility.Identifier(info.Name); if (info.DataStructure is EntityInfo) { return(PropertyDatabaseDefinition.AddColumn(_conceptMetadata, info, Sql.Format("MoneyPropertyDatabaseDefinition_CreateCheckConstraint", ConstraintName(info), SqlUtility.Identifier(info.Name)))); } return(""); }
private SqlTriggerInfo GeneratedTrigger(ModificationTimeOfInfo info, string triggerType) { return(new SqlTriggerInfo { Structure = info.Property.DataStructure, Name = info.Property.Name + "_On" + triggerType + info.ModifiedProperty.Name, Events = "FOR " + triggerType.ToUpper(), TriggerSource = Sql.Format("ModificationTimeOfDatabaseDefinition_" + triggerType + "TriggerBody", SqlUtility.Identifier(info.Property.DataStructure.Module.Name), SqlUtility.Identifier(info.Property.DataStructure.Name), SqlUtility.Identifier(info.Property.Name), SqlUtility.Identifier(DbPropertyName(info.ModifiedProperty))) }); }
public static string AddColumn(ConceptMetadata conceptMetadata, PropertyInfo property, string options = "") { string columnName = conceptMetadata.Get(property, ColumnNamesMetadata).Single(); return(Sql.Format("PropertyDatabaseDefinition_AddColumn", SqlUtility.Identifier(property.DataStructure.Module.Name), SqlUtility.Identifier(property.DataStructure.Name), DslUtility.ValidateIdentifier(columnName, property, "Invalid column name."), conceptMetadata.Get(property, ColumnTypesMetadata).Single(), options, Options1Tag.Evaluate(property), Options2Tag.Evaluate(property), AfterCreateTag.Evaluate(property)).Trim()); }