private string GetQueryStr(GroupedColumns table) { var queryBuilder = new InsertQueryBuilder(); var insertedColumns = GetInsertedColumns(table.Columns); queryBuilder.InsertIntoTable(table.Columns[0].TableName, insertedColumns, false); var query = queryBuilder.BuildQuery(); return(query); }
private string AddValueFromForeignKeyColumns(Guid tenantId, string tableName, string entityPrefix, string foreignKeyCoumn, Guid foreignKeyColValue, List <ColumnAndField> matchingColumns, List <ColumnAndField> entityColumns) { var queryBuilder = new InsertQueryBuilder(); var insertColumns = new Dictionary <string, string> (); foreach (var match in matchingColumns) { if (match.TableName.Equals(tableName) && match.EntityPrefix.Equals(entityPrefix)) { if (match.Value != null) { insertColumns.Add(match.ColumnName, match.Value.ToString()); } } } var inverseId = Guid.NewGuid(); var inverPrimaryKeyColumns = entityColumns.FirstOrDefault(t => t.ColumnName.Equals(t.PrimaryKey) && t.TableName.Equals(tableName) && t.EntityPrefix.Equals(entityPrefix) ); if (inverPrimaryKeyColumns == null) { throw new FieldAccessException("Primary key not found."); } insertColumns.Add(inverPrimaryKeyColumns.ColumnName, inverseId.ToString()); //tenant id. var primaryTenantId = entityColumns.FirstOrDefault(x => x.ColumnName.Equals(_tenantId) && x.TableName.Equals(tableName)); if (primaryTenantId == null) { throw new FieldAccessException("Tenant id not found."); } insertColumns.Add(primaryTenantId.ColumnName, tenantId.ToString()); //foreignKey var foreignKeyColumns = entityColumns.FirstOrDefault(x => x.ColumnName.Equals(foreignKeyCoumn) && x.TableName.Equals(tableName)); if (foreignKeyColumns == null) { throw new FieldAccessException("Tenant id not found."); } insertColumns.Add(foreignKeyColumns.ColumnName, foreignKeyColValue.ToString()); queryBuilder.InsertIntoTable(tableName, insertColumns, false); var insertQuery = queryBuilder.BuildQuery(); IQueryAdmin admin = new QueryAdmin(); admin.SaveResult(tenantId, "inverse", insertQuery); return(inverseId.ToString()); }
public bool AddRelations(Guid tenantId, string relationEntityName, string parentEntityName, Guid parentId, string childEntityName, List <Guid> childIds) { IMetadataManager _metadaManager = new VPC.Framework.Business.MetadataManager.Contracts.MetadataManager(); var tableName = _metadaManager.GetTableNameByEntityname(relationEntityName); var primaryKey = _metadaManager.GetPrimaryKeyByEntityname(relationEntityName); var fields = _metadaManager.GetColumnNameByEntityName(relationEntityName, null); if (fields.Any()) { var parentTableName = _metadaManager.GetTableNameByEntityname(parentEntityName); var parentField = fields.FirstOrDefault(t => t.ReferenceTableName.Equals(parentTableName)); var childTableName = _metadaManager.GetTableNameByEntityname(childEntityName); var childField = fields.FirstOrDefault(t => t.ReferenceTableName.Equals(childTableName)); //delete and create.... var queryBuilder = new DeleteQueryBuilder(); queryBuilder.SelectFromTable(tableName); queryBuilder.AddWhere(parentField.ColumnName, Comparison.Equals, parentId.ToString(), 1); var deleteQuery = queryBuilder.BuildQuery(); //---------------------------------------------------------------------------------------- IRelationQueryAdmin deleteAdmin = new RelationQueryAdmin(); var res = deleteAdmin.DeleteResult(tenantId, relationEntityName, deleteQuery); //need to change this logic.... foreach (var childId in childIds) { var insertQueryBuilder = new InsertQueryBuilder(); var insertColumns = GetNecessaryColumns(tenantId, parentId, fields, parentField); insertColumns.Add(childField.ColumnName, childId.ToString()); insertQueryBuilder.InsertIntoTable(tableName, insertColumns, false); var insertQuery = insertQueryBuilder.BuildQuery(); IRelationQueryAdmin saveAdmin = new RelationQueryAdmin(); saveAdmin.SaveResult(tenantId, relationEntityName, insertQuery); } } return(true); }