예제 #1
0
        /// <summary>
        /// Sync single user to server
        /// </summary>
        public async Task <bool> SyncTable <TEntity>(TEntity item) where TEntity : IEntity, IServerEntity
        {
            if (item.SyncStatus == (int)SyncStatus.Ok)
            {
                return(true);
            }
            try
            {
                IRestResult <int> response = await SendRequestAsync(item);

                if (!response.IsSuccess)
                {
                    return(false);
                }
                if (item.SyncStatus == (int)SyncStatus.Deleted)
                {
                    Repository.Delete <User>(x => x.DbId == item.DbId);
                    return(true);
                }
                if (response.Data > 0)
                {
                    item.ServerId   = response.Data;
                    item.SyncStatus = (int)SyncStatus.Ok;
                    Repository.SaveOrUpdate(item);
                    return(true);
                }
                return(false);
            }
            catch (Exception)
            {
                // LOG EXCEPTION
                return(false);
            }
        }
        /// <summary>
        /// Creates a failed result.
        /// </summary>
        /// <param name="restResult">The failed REST result.</param>
        /// <returns>A failed result.</returns>
        public static TActualResult FromError
        (
            IRestResult restResult
        )
        {
            if (restResult.DiscordError is not null)
            {
                return(FromError(restResult.ErrorReason, restResult.DiscordError));
            }

            if (restResult.HttpError.HasValue)
            {
                return(FromError(restResult.ErrorReason, restResult.HttpError.Value));
            }

            return(FromError((IResult)restResult));
        }