public IActionResult SetData(string data)
        {
            WikiUpdateQuery query;

            try
            {
                query = JsonConvert.DeserializeObject <WikiUpdateQuery>(data);
                if (HashEncrypter.GetHash(query.dataString) != query.hashedData)
                {
                    return(new JsonResult(new WikiUpdateResponse(query.dataSetName, WikiResponseStatus.DATA_DISTORTED).ToString()));
                }
                var dataBase = new DataSetDBContext();

                bool authorizationSuccess = false;
                if (dataBase.dataSets.FirstOrDefault((ds) => ds.name == query.dataSetName) == null)
                {
                    //Add a new record
                    dataBase.dataSets.Add(new DataSet
                    {
                        name           = query.dataSetName,
                        hashedPassword = HashEncrypter.GetHash(query.password),
                        data           = query.dataString
                    });
                    dataBase.SaveChanges();
                    authorizationSuccess = true;
                    return(new JsonResult(new WikiUpdateResponse(query.dataSetName, WikiResponseStatus.CREATE_NEW_RECORD).ToString()));
                }

                if (dataBase.dataSets.FirstOrDefault((ds) => ds.name == query.dataSetName).hashedPassword == HashEncrypter.GetHash(query.password))
                {
                    authorizationSuccess = true;
                }

                if (!authorizationSuccess)
                {
                    return(new JsonResult(new WikiUpdateResponse(query.dataSetName, WikiResponseStatus.PASSWORD_UNMATCH).ToString()));
                }

                dataBase.dataSets.First((ds) => ds.name == query.dataSetName).data = query.dataString;
                dataBase.SaveChanges();
                return(new JsonResult(new WikiUpdateResponse(query.dataSetName, WikiResponseStatus.SUCCESS).ToString()));
            }
            catch (Exception e) {
                return(new JsonResult(new WikiUpdateResponse(e.Message, WikiResponseStatus.FAIL).ToString()));
            }
        }
        public IActionResult GetData(string dataSetName)
        {
            if (string.IsNullOrWhiteSpace(dataSetName))
            {
                return(new JsonResult(new WikiQueryResponse(dataSetName, WikiResponseStatus.FAIL, null).ToString()));
            }
            var dataBase = new DataSetDBContext();
            var data     = dataBase.dataSets.FirstOrDefault((ds) => ds.name == dataSetName);

            if (data == null)
            {
                var result = new ContentResult();
                result.Content = new WikiQueryResponse(dataSetName, WikiResponseStatus.NOTEXIST, null).ToString();
                Console.WriteLine(result.Content);
                return(result);
            }
            return(new JsonResult(new WikiQueryResponse(dataSetName, WikiResponseStatus.SUCCESS, data.data).ToString()));
        }
        public IActionResult Index()
        {
            var dataBase = new DataSetDBContext();

            dataBase.dataSets.Add(new DataSet
            {
                name           = "0",
                hashedPassword = "******",
                data           = JsonConvert.SerializeObject(new List <NamedObject>
                {
                    new NamedObject
                    {
                        name           = "testItem",
                        normalizedName = "testItem",
                        description    = "testDescription",
                        children       = null
                    }
                })
            });
            dataBase.SaveChanges();

            return(View());
        }