예제 #1
0
        public override string RenameRelationQuery(NoDbTable table, NoDbRelation oldRelation, NoDbRelation newRelation)
        {
            StringBuilder stringBuilder = new StringBuilder();

            stringBuilder.AppendFormat("EXEC sp_rename N'{2}.{0}', N'{1}';", Escape(oldRelation.Name), Escape(newRelation.Name));
            return(stringBuilder.ToString());
        }
예제 #2
0
        public override string RenameIndexQuery(NoDbTable table, NoDbIndex oldIndex, NoDbIndex newIndex)
        {
            StringBuilder stringBuilder = new StringBuilder();

            stringBuilder.AppendFormat("EXEC sp_rename N'{0}.{1}', N'{2}', 'INDEX';", table.Detail.GetTableDbName(), oldIndex.Name, newIndex.Name);
            return(stringBuilder.ToString());
        }
예제 #3
0
        public override string CreateIndexQuery(NoDbTable table, NoDbIndex index)
        {
            string        schema        = GetSchema(table);
            StringBuilder stringBuilder = new StringBuilder();

            if (index.IsPrimaryKey)
            {
                stringBuilder.AppendFormat("ALTER TABLE {3}.{1} ADD CONSTRAINT {0} PRIMARY KEY ({2});",
                                           Escape(index.Name),
                                           Escape(table.Detail.GetTableDbName()),
                                           string.Join(", ", index.Columns.Select(x => Escape(x.ColumnName))),
                                           schema
                                           );
            }
            else
            {
                stringBuilder.AppendFormat("CREATE {3} INDEX {0} ON {4}.{1} ({2});",
                                           Escape(index.Name),
                                           Escape(table.Detail.GetTableDbName()),
                                           string.Join(", ", index.Columns.Select(x => Escape(x.ColumnName) + " " + x.Sort)),
                                           (index.IsUnique ? "UNIQUE" : ""),
                                           schema
                                           );
            }
            return(stringBuilder.ToString());
        }
예제 #4
0
        public override string RenameColumnQuery(NoDbTable table, NoDbColumn oldColumn, NoDbColumn newColumn)
        {
            string        schema        = GetSchema(table);
            StringBuilder stringBuilder = new StringBuilder();

            stringBuilder.AppendFormat("ALTER TABLE {3}.{0} RENAME COLUMN {1} TO {2};", Escape(table.Detail.GetTableDbName()), Escape(oldColumn.Name), Escape(newColumn.Name), schema);
            return(stringBuilder.ToString());
        }
예제 #5
0
        public override string DropTableQuery(NoDbTable table)
        {
            string        schema        = GetSchema(table);
            StringBuilder stringBuilder = new StringBuilder();

            stringBuilder.AppendFormat("IF OBJECT_ID('{1}.{0}', 'U') IS NOT NULL\nDROP TABLE {1}.{0};", Escape(table.Detail.GetTableDbName()), schema);
            return(stringBuilder.ToString());
        }
예제 #6
0
        public override string DropColumnQuery(NoDbTable table, NoDbColumn column)
        {
            string        schema        = GetSchema(table);
            StringBuilder stringBuilder = new StringBuilder();

            stringBuilder.AppendFormat("ALTER TABLE {2}.{0} DROP COLUMN {1};", Escape(table.Detail.GetTableDbName()), Escape(column.Name), schema);
            return(stringBuilder.ToString());
        }
예제 #7
0
        public override string RenameIndexQuery(NoDbTable table, NoDbIndex oldIndex, NoDbIndex newIndex)
        {
            string        schema        = GetSchema(table);
            StringBuilder stringBuilder = new StringBuilder();

            stringBuilder.AppendFormat("ALTER INDEX {2}.{0} RENAME TO {1};", Escape(oldIndex.Name), Escape(newIndex.Name), schema);
            return(stringBuilder.ToString());
        }
예제 #8
0
        public override string RenameRelationQuery(NoDbTable table, NoDbRelation oldRelation, NoDbRelation newRelation)
        {
            string        schema        = GetSchema(table);
            StringBuilder stringBuilder = new StringBuilder();

            stringBuilder.AppendFormat("ALTER TABLE {3}.{0} RENAME CONSTRAINT {1} TO {2}", Escape(table.Detail.GetTableDbName()), Escape(oldRelation.Name), Escape(newRelation.Name), schema);
            return(stringBuilder.ToString());
        }
예제 #9
0
        public override string TableConstraintPrimaryKeyQuery(NoDbTable table)
        {
            StringBuilder stringBuilder = new StringBuilder();
            var           pkColumns     = table.GetPkColumns();

            stringBuilder.AppendFormat("CONSTRAINT pk_{0} PRIMARY KEY ({1})", table.Hash, string.Join(", ", pkColumns.Select(x => Escape(x.Name))));
            return(stringBuilder.ToString());
        }
예제 #10
0
        public override string DropTableQuery(NoDbTable table)
        {
            string        schema        = GetSchema(table);
            StringBuilder stringBuilder = new StringBuilder();

            stringBuilder.AppendFormat("DROP TABLE IF EXISTS {1}.{0};", Escape(table.Detail.GetTableDbName()), schema);
            return(stringBuilder.ToString());
        }
예제 #11
0
        public override string RenameColumnQuery(NoDbTable table, NoDbColumn oldColumn, NoDbColumn newColumn)
        {
            string        schema        = GetSchema(table);
            StringBuilder stringBuilder = new StringBuilder();

            stringBuilder.AppendFormat("EXEC sp_rename '{3}.{0}.{1}', '{2}', 'COLUMN';", table.Detail.GetTableDbName(), oldColumn.Name, newColumn.Name, schema);
            return(stringBuilder.ToString());
        }
예제 #12
0
        public override string DeleteRelationQuery(NoDbTable table, NoDbRelation relation)
        {
            string        schema        = GetSchema(table);
            StringBuilder stringBuilder = new StringBuilder();

            stringBuilder.AppendFormat("ALTER TABLE {2}.{0} DROP CONSTRAINT {1};", Escape(table.Detail.GetTableDbName()), Escape(relation.Name), schema);
            return(stringBuilder.ToString());
        }
예제 #13
0
        public override string RenameRelationQuery(NoDbTable table, NoDbRelation oldRelation, NoDbRelation newRelation)
        {
            string        schema        = GetSchema(table);
            StringBuilder stringBuilder = new StringBuilder();

            stringBuilder.AppendFormat(DeleteRelationQuery(table, oldRelation) + "\n");
            stringBuilder.AppendFormat(CreateRelationQuery(table, newRelation));
            return(stringBuilder.ToString());
        }
예제 #14
0
        public NoDbSearchItem GetDefaultSearchItem(NoDbTable table, List <NoDbSearchItem> currentItems)
        {
            var defaultItem = new NoDbSearchItem
            {
                RepositoryMethod = "Search" + (currentItems?.Count > 0 ? "_" + currentItems?.Count : "")
            };

            foreach (var column in table.ColumnsWithRelated())
            {
                defaultItem.AllColumns.Add(new NoDbSearchColumn
                {
                    Name            = column.Name,
                    DisplayInCreate = true,
                    DisplayInEdit   = true,
                    DisplayInDetail = true
                });

                defaultItem.DisplayedColumns.Add(new NoDbSearchGridColumn
                {
                    ColumnName = column.Name
                });

                if (NoDbHelper.IsDate(column.DataType))
                {
                    defaultItem.Columns.Add(new NoDbSearchFilterColumn
                    {
                        ColumnName = column.Name,
                        Title      = column.Name + ">",
                        Sign       = NoDbSearchSign.Greater
                    });
                    defaultItem.Columns.Add(new NoDbSearchFilterColumn
                    {
                        ColumnName = column.Name,
                        Title      = column.Name + "<=",
                        Sign       = NoDbSearchSign.LessEq
                    });
                    continue;
                }

                if (column.DataType == NoDbDataType.STRING)
                {
                    defaultItem.Columns.Add(new NoDbSearchFilterColumn
                    {
                        ColumnName = column.Name,
                        Sign       = NoDbSearchSign.Contain
                    });
                    continue;
                }
                defaultItem.Columns.Add(new NoDbSearchFilterColumn
                {
                    ColumnName = column.Name,
                    Sign       = NoDbSearchSign.Equal
                });
            }

            return(defaultItem);
        }
예제 #15
0
        public override string UpdateColumnQuery(NoDbTable table, NoDbColumn column)
        {
            string        schema        = GetSchema(table);
            StringBuilder stringBuilder = new StringBuilder();

            stringBuilder.AppendFormat("ALTER TABLE {0}.{1} " +
                                       "ALTER COLUMN {2} TYPE {3} --USING ({2}::integer) \n" +
                                       ",ALTER COLUMN {2} {4} NOT NULL;", schema, Escape(table.Detail.GetTableDbName()),
                                       Escape(column.Name), ColumnDataType(column), column.Required ? "SET" : "DROP");
            return(stringBuilder.ToString());
        }
예제 #16
0
        private void NewTableButton_Click(object sender, RoutedEventArgs e)
        {
            var newTableWindow = new SubWindows.NewTable((string name, string template) =>
            {
                _selectedTable = _noDbService.TableService.New(name, template);
                BindTables();
                return(true);
            });

            newTableWindow.ShowDialog();
            refreshStaticManagerSolutions();
        }
예제 #17
0
파일: TableService.cs 프로젝트: onka13/NoDb
        public void UpdateTable(NoDbTable updatedTable)
        {
            if (string.IsNullOrWhiteSpace(updatedTable.Detail.TitleColumn))
            {
                throw new Exception("Please enter TitleColumn field!");
            }
            var index         = Tables.FindIndex(x => x.Hash == updatedTable.Hash);
            var originalTable = Tables[index];

            _noDbService.RevisionService.SaveRevision(originalTable, updatedTable);
            Tables[index] = updatedTable;
            WriteToFile();
        }
예제 #18
0
        public override string CreateRelationQuery(NoDbTable table, NoDbRelation relation)
        {
            string        schema        = GetSchema(table);
            StringBuilder stringBuilder = new StringBuilder();

            stringBuilder.AppendFormat("ALTER TABLE {2}.{0} ADD CONSTRAINT {1}\n", Escape(table.Detail.GetTableDbName()), Escape(relation.Name), schema);
            stringBuilder.AppendFormat("FOREIGN KEY ({0}) REFERENCES {3}.{1} ({2})\n",
                                       string.Join(",", relation.Items.Select(x => Escape(x.ColumnName))),
                                       Escape(relation.ForeignTable),
                                       string.Join(",", relation.Items.Select(x => Escape(x.ForeignColumn))),
                                       schema
                                       );
            stringBuilder.AppendFormat("ON DELETE {0}\nON UPDATE {1};", ToRule(relation.DeleteRule), ToRule(relation.UpdateRule));
            return(stringBuilder.ToString());
        }
예제 #19
0
        public override string DropIndexQuery(NoDbTable table, NoDbIndex index)
        {
            string        schema        = GetSchema(table);
            StringBuilder stringBuilder = new StringBuilder();

            if (index.IsPrimaryKey)
            {
                stringBuilder.AppendFormat("ALTER TABLE {2}.{0} DROP CONSTRAINT {1};", Escape(table.Detail.GetTableDbName()), Escape(index.Name), schema);
            }
            else
            {
                stringBuilder.AppendFormat("DROP INDEX {1}.{0};", Escape(index.Name), schema);
            }
            return(stringBuilder.ToString());
        }
예제 #20
0
        private void XTables_SelectionChanged(object sender, SelectionChangedEventArgs e)
        {
            if (xTables.SelectedItem == null)
            {
                _selectedTable = null;
                ClearAllRelatedWithTable();
                StaticManager.SelectedTable = null;
                return;
            }

            _selectedTable              = (xTables.SelectedItem as NoDbTable).JsonClone();
            xColumns.ItemsSource        = _selectedTable.Columns;
            xTableDetail.SelectedObject = _selectedTable.Detail;
            xColumnsGrid.IsEnabled      = true;
            StaticManager.SelectedTable = _selectedTable;
        }
예제 #21
0
        public override string AddColumnQuery(NoDbTable table, NoDbColumn column)
        {
            var           schema        = GetSchema(table);
            StringBuilder stringBuilder = new StringBuilder();

            if (column.Required)
            {
                stringBuilder.AppendFormat("ALTER TABLE {2}.{0} ADD {1};\n", Escape(table.Detail.GetTableDbName()), ColumnQuery(column), schema);
                column.Required = false;
                stringBuilder.AppendFormat("--ALTER TABLE {2}.{0} ADD {1};\n", Escape(table.Detail.GetTableDbName()), ColumnQuery(column), schema);
                stringBuilder.AppendFormat("--UPDATE {0}.{1} SET {2} = 0;\n", schema, Escape(table.Detail.GetTableDbName()), Escape(column.Name));
                column.Required = true;
                stringBuilder.AppendFormat("--" + UpdateColumnQuery(table, column).Replace("\n", "\n--"));
            }
            else
            {
                stringBuilder.AppendFormat("ALTER TABLE {2}.{0} ADD {1};", Escape(table.Detail.GetTableDbName()), ColumnQuery(column), schema);
            }
            return(stringBuilder.ToString());
        }
예제 #22
0
        public override string CreateTableQuery(NoDbTable table)
        {
            string        schema        = GetSchema(table);
            StringBuilder stringBuilder = new StringBuilder();

            stringBuilder.AppendFormat("CREATE TABLE {1}.{0}(\n", Escape(table.Detail.GetTableDbName()), schema);

            stringBuilder.AppendFormat("\t{0}\n", string.Join(",\n\t", table.ColumnsWithRelated().Select(x => ColumnQuery(x))));

            stringBuilder.Append("\n);\n");
            foreach (var item in table.Indices)
            {
                stringBuilder.Append(CreateIndexQuery(table, item) + "\n");
            }
            foreach (var item in table.Relations)
            {
                stringBuilder.Append(CreateRelationQuery(table, item));
            }
            return(stringBuilder.ToString());
        }
예제 #23
0
 public abstract string DropTableQuery(NoDbTable table);
예제 #24
0
 public abstract string DropIndexQuery(NoDbTable table, NoDbIndex index);
예제 #25
0
 public abstract string RenameColumnQuery(NoDbTable table, NoDbColumn oldColumn, NoDbColumn newColumn);
예제 #26
0
 public string GetSchema(NoDbTable table)
 {
     return(table.Detail.Schema ?? "dbo");
 }
예제 #27
0
 public abstract string UpdateColumnQuery(NoDbTable table, NoDbColumn column);
예제 #28
0
 public abstract string TableConstraintPrimaryKeyQuery(NoDbTable table);
예제 #29
0
 public abstract string RenameRelationQuery(NoDbTable table, NoDbRelation oldRelation, NoDbRelation newRelation);
예제 #30
0
 public abstract string RenameIndexQuery(NoDbTable table, NoDbIndex oldIndex, NoDbIndex newIndex);