示例#1
0
        public ActionResult ViewData(string tableName)
        {
            var table = _currentDatabase.Tables.FirstOrDefault(x => x.Name == tableName);

            if (table != null)
            {
                var dataList = DBreezeOperations.GetAllData(_dBreeze, table.Name);

                if (dataList == null)
                {
                    table.DataList = new Dictionary <string, string>();
                }
                else
                {
                    table.DataList = dataList;
                }

                _currentTable = table;
            }

            return(View(_currentTable));
        }
示例#2
0
        public ActionResult CreateQuery(SimpleQuery query)
        {
            if (query.Type == QueryType.Insert)
            {
                DBreezeOperations.AddData(_dBreeze, query);
                //DBreezeOperations.GetDataPK(_dBreeze, _currentTable, _currentTable.PrimaryKey, FieldType.number, ConditionType.Less, "10");
                //DBreezeOperations.GetConditionedData(_dBreeze, _currentTable, "firsstname", FieldType.varchar, ConditionType.Equal, "ell");
            }
            else
            {
                var deleted = DBreezeOperations.DeleteData(_dBreeze, query, _currentTable, _currentDatabase);

                if (!deleted)
                {
                    ModelState.AddModelError("", "Can't delete! Its a parent table!!!");
                    return(View("_DeleteData", query));
                    //return Json(new {status = "error", message = "Message error"});
                }
            }
            _currentTable.DataList = DBreezeOperations.GetAllData(_dBreeze, _currentTable.Name);

            return(View("ViewData", _currentTable));
        }
示例#3
0
        public ActionResult ConditionalSearch(ConditionalDataModel model)
        {
            model.Table = _currentTable;
            try
            {
                model.ValuesFound = DBreezeOperations.GetConditionedData(_dBreeze, model.Table, model.FieldValue,
                                                                         model.FieldType, model.ConditionType, model.SearchedValue);
            }
            catch (Exception)
            {
            }

            // great hack!
            if (model.FieldType == FieldType.number)
            {
                switch (model.ConditionType)
                {
                case ConditionType.Equal:
                    model.ValuesFound = _currentTable.DataList.Where(x => int.Parse(x.Key) == int.Parse(model.SearchedValue)).ToDictionary(x => x.Key, x => x.Value);
                    break;

                case ConditionType.Greater:
                    model.ValuesFound = _currentTable.DataList.Where(x => int.Parse(x.Key) > int.Parse(model.SearchedValue)).ToDictionary(x => x.Key, x => x.Value);
                    break;

                case ConditionType.Less:
                    model.ValuesFound = _currentTable.DataList.Where(x => int.Parse(x.Key) < int.Parse(model.SearchedValue)).ToDictionary(x => x.Key, x => x.Value);
                    break;
                }
            }
            else if (model.FieldType == FieldType.varchar)
            {
                model.ValuesFound = model.ValuesFound.Where(x => x.Value.Contains(model.SearchedValue)).ToDictionary(x => x.Key, x => x.Value);
            }

            return(View(model));
        }
示例#4
0
        public ActionResult AddIndex(Table table)
        {
            var realField = new Field();
            var realTable = new Table();

            foreach (var db in _databases)
            {
                foreach (var t in db.Tables)
                {
                    if (t.Name == table.Name)
                    {
                        foreach (var f in t.Fields)
                        {
                            if (f.Name == table.Index)
                            {
                                realField = f;
                                realTable = t;
                            }
                        }
                    }
                }
            }

            var indexFile = new IndexFile
            {
                Indexs = new List <Index>()
                {
                    new Index {
                        IndexName = table.FileName
                    }
                },                                                                   // index name is set on FileName attribute in _AddIndex.cshtml
                KeyLength = realField.Length,
                FileName  = $"{table.FileName}.ind",
                IndexType = table.IndexType,
                IsUnique  = table.IndexUnique
            };

            if (!_currentTable.IndexFiles.Any(c => c.Indexs.Any(z => z.IndexName == table.Index)))
            {
                if (table.IndexUnique)
                {
                    _currentTable.IndexFiles.Add(indexFile);

                    var value = string.Empty;

                    var fieldsNotPk = realTable.Fields.Where(c => realTable.PrimaryKey != c.Name);

                    foreach (var s in fieldsNotPk)
                    {
                        if (s.Name != indexFile.Indexs.FirstOrDefault()?.IndexName)
                        {
                            value += s.Name + "#";
                        }
                    }
                    value = value.Remove(value.Length - 1);

                    using (var tranz = _dBreeze.GetTransaction())
                    {
                        if (!_dBreeze.Scheme.IfUserTableExists(table.FileName))
                        {
                            tranz.InsertTable(table.FileName, table.Index, 0);

                            var pairs = DBreezeOperations.GetAllData(_dBreeze, table.Name).OrderBy(c => c.Key);

                            foreach (var v in pairs)
                            {
                                tranz.Insert(table.Index, v.Key, v.Value);
                            }
                        }

                        tranz.Commit();
                    }
                }
            }
            else
            {
                // non-unique index file
            }


            return(View("Fields", _currentTable));
        }