예제 #1
0
        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);
        }
예제 #2
0
        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());
        }
예제 #3
0
        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);
        }