Ejemplo n.º 1
0
        public override RemoteResult InitDb()
        {
            var  connection = _implModule.RentConnectionInner();
            bool result     = _userCommandCreator.CreateDb(connection.Element);

            connection.Dispose();

            RemoteResult ret;

            if (result)
            {
                var idinit      = _userCommandCreator.GetKeyInitialization();
                var metaCommand = _metaDataCommandCreator.InitMetaDataDb(idinit);

                ret = _implModule.ExecuteNonQuery(metaCommand);
            }
            else
            {
                ret = new InnerFailResult("Fail init db");
            }

            if (!(ret is SuccessResult))
            {
                ret = new InnerServerError(ret);
            }

            return(ret);
        }
Ejemplo n.º 2
0
        private RemoteResult UpdateInner(InnerData obj, bool local)
        {
            object key;
            object value;

            DeserializeData(obj, out key, out value);

            var command = _userCommandCreator.Update((TKey)key, (TValue)value);

            RemoteResult ret = _implModule.ExecuteNonQuery(command);

            if (!ret.IsError)
            {
                command = _metaDataCommandCreator.UpdateMetaData(local);
                command = _metaDataCommandCreator.SetKeytoCommand(command, key);
                ret     = _implModule.ExecuteNonQuery(command);
            }

            if (ret.IsError)
            {
                ret = new InnerServerError(ret);
            }

            return(ret);
        }
Ejemplo n.º 3
0
        private RemoteResult CreateInner(InnerData obj, bool local)
        {
            var timer = WriterCounters.Instance.CreateTimer.StartNew();

            object key;
            object value;

            DeserializeData(obj, out key, out value);

            var          command = _userCommandCreator.Create((TKey)key, (TValue)value);
            RemoteResult ret     = _implModule.ExecuteNonQuery(command);

            if (!ret.IsError)
            {
                var metaTimer = WriterCounters.Instance.CreateMetaDataTimer.StartNew();

                var metaCommand = _metaDataCommandCreator.CreateMetaData(local);
                metaCommand = _metaDataCommandCreator.SetKeytoCommand(metaCommand, key);
                ret         = _implModule.ExecuteNonQuery(metaCommand);

                metaTimer.Complete();
            }

            if (ret.IsError)
            {
                ret = new InnerServerError(ret);
            }

            timer.Complete();
            return(ret);
        }
Ejemplo n.º 4
0
        public override RemoteResult Create(InnerData obj, bool local)
        {
            var meta = ReadMetaData(obj);

            if (meta.Item1 == null && meta.Item2)
            {
                return(CreateInner(obj, local));
            }

            if (meta.Item1 == null && !meta.Item2)
            {
                return(CreateMetaUpdateData(obj, local));
            }

            object key;
            object value;

            DeserializeData(obj, out key, out value);

            if (meta.Item2)
            {
                var          command = _userCommandCreator.Create((TKey)key, (TValue)value);
                RemoteResult ret     = _implModule.ExecuteNonQuery(command);

                if (ret.IsError)
                {
                    return(new InnerServerError(ret));
                }
            }

            if (meta.Item1.IsDeleted)
            {
                var metaCommand = _metaDataCommandCreator.SetDataNotDeleted();
                metaCommand = _metaDataCommandCreator.SetKeytoCommand(metaCommand, key);
                var ret = _implModule.ExecuteNonQuery(metaCommand);

                if (ret.IsError)
                {
                    ret = new InnerServerError(ret);
                }
                else
                {
                    return(UpdateInner(obj, local));
                }

                return(ret);
            }

            return(new InnerServerError(Errors.DataAlreadyExists));
        }
Ejemplo n.º 5
0
        public override RemoteResult Delete(InnerData obj)
        {
            object key;

            DeserializeKey(obj, out key);

            var metaCommand = _metaDataCommandCreator.SetDataDeleted();

            metaCommand = _metaDataCommandCreator.SetKeytoCommand(metaCommand, key);
            RemoteResult ret = _implModule.ExecuteNonQuery(metaCommand);

            if (ret.IsError)
            {
                ret = new InnerServerError(ret);
            }

            return(ret);
        }