コード例 #1
0
        public User Insert(User user)
        {
            if (user == null)
            {
                throw new ArgumentNullException("user");
            }

            return(SqlQueryExecutor.Execute(() =>
            {
                String query = string.Format(CultureInfo.InvariantCulture, "INSERT INTO {1} {0}; SELECT LAST_INSERT_ID();", InsertFieldList, TableName);
                int insertedId = (int)_connectionProvider.CurrentConnection.Query <long>(query, new { user.Name, user.Email, user.Password, user.Locale, user.TimeZone }).FirstOrDefault();
                if (insertedId <= 0)
                {
                    throw new MonsterDbException("User insertion failed");
                }

                String idAndStampQuery = string.Format(CultureInfo.InvariantCulture, "SELECT id AS Id, stamp AS Stamp FROM {0} WHERE id=@Id;", TableName);
                IdAndStamp idAndStamp = _connectionProvider.CurrentConnection.Query <IdAndStamp>(idAndStampQuery, new { Id = insertedId }).FirstOrDefault();

                if (idAndStamp == null)
                {
                    throw new MonsterDbException("User insertion failed");
                }

                user.Id = idAndStamp.Id;
                user.Stamp = idAndStamp.Stamp;
                return user;
            }));
        }
コード例 #2
0
        public StorageAccountSetting Update(StorageAccountSetting setting)
        {
            if (setting == null)
            {
                throw new ArgumentNullException("setting");
            }


            return(SqlQueryExecutor.Execute(() =>
            {
                String query = string.Format(CultureInfo.InvariantCulture, "UPDATE {1} SET {0} WHERE Id=@Id", UpdateFieldList, TableName);
                _connectionProvider.CurrentConnection.Execute(query, new { setting.Id, setting.StorageAccountId, setting.SettingName, setting.SettingValue });

                String idAndStampQuery = string.Format(CultureInfo.InvariantCulture, "SELECT id AS Id, stamp AS Stamp FROM {0} WHERE id=@Id;", TableName);
                IdAndStamp idAndStamp = _connectionProvider.CurrentConnection.Query <IdAndStamp>(idAndStampQuery, new { setting.Id }).FirstOrDefault();

                if (idAndStamp == null)
                {
                    throw new MonsterDbException("Account setting update failed");
                }

                setting.Id = idAndStamp.Id;
                setting.Stamp = idAndStamp.Stamp;
                return setting;
            }));
        }
コード例 #3
0
        public StorageAccountSetting Create(StorageAccountSetting setting)
        {
            if (setting == null)
            {
                throw new ArgumentNullException("setting");
            }

            return(SqlQueryExecutor.Execute(() =>
            {
                String query = string.Format(CultureInfo.InvariantCulture, "INSERT INTO {1} {0} RETURNING id;", InsertFieldList, TableName);
                int insertedId = _connectionProvider.CurrentConnection.Query <int>(query, new { setting.StorageAccountId, setting.SettingName, setting.SettingValue }).FirstOrDefault();
                if (insertedId <= 0)
                {
                    throw new MonsterDbException("Account setting insertion failed");
                }

                String idAndStampQuery = string.Format(CultureInfo.InvariantCulture, "SELECT id AS Id, stamp AS Stamp FROM {0} WHERE id=@Id;", TableName);
                IdAndStamp idAndStamp = _connectionProvider.CurrentConnection.Query <IdAndStamp>(idAndStampQuery, new { Id = insertedId }).FirstOrDefault();

                if (idAndStamp == null)
                {
                    throw new MonsterDbException("Account insertion failed");
                }

                setting.Id = idAndStamp.Id;
                setting.Stamp = idAndStamp.Stamp;
                return setting;
            }));
        }
コード例 #4
0
        public StorageAccount Insert(StorageAccount account)
        {
            if (account == null)
            {
                throw new ArgumentNullException("account");
            }

            return(SqlQueryExecutor.Execute(() =>
            {
                String query = string.Format(CultureInfo.InvariantCulture, "INSERT INTO {1} {0} RETURNING id;", InsertFieldList, TableName);
                int insertedId = _connectionProvider.CurrentConnection.Query <int>(query, new { account.AccountName, account.StoragePluginId, account.UserId, account.Stamp }).FirstOrDefault();
                if (insertedId <= 0)
                {
                    throw new MonsterDbException("Account insertion failed");
                }

                String idAndStampQuery = string.Format(CultureInfo.InvariantCulture, "SELECT id AS Id, stamp AS Stamp FROM {0} WHERE id=@Id;", TableName);
                IdAndStamp idAndStamp = _connectionProvider.CurrentConnection.Query <IdAndStamp>(idAndStampQuery, new { Id = insertedId }).FirstOrDefault();

                if (idAndStamp == null)
                {
                    throw new MonsterDbException("Account insertion failed");
                }

                account.Id = idAndStamp.Id;
                account.Stamp = idAndStamp.Stamp;
                return account;
            }));
        }
コード例 #5
0
        public UpdateResult Update(User user)
        {
            if (user == null)
            {
                throw new ArgumentNullException("user");
            }


            return(SqlQueryExecutor.Execute(() =>
            {
                return _connectionProvider.DoInTransaction(() =>
                {
                    String checkStampQuery = string.Format(CultureInfo.InvariantCulture, "SELECT {0} FROM {1} u " +
                                                           "WHERE u.Id = @Id AND u.stamp = @Stamp LIMIT 1", SelectFieldList, TableName);
                    User userCheck = _connectionProvider.CurrentConnection.Query <User>(checkStampQuery, new { user.Id, user.Stamp }).FirstOrDefault();

                    if (userCheck == null)
                    {
                        String checkUserQuery = string.Format(CultureInfo.InvariantCulture, "SELECT {0} FROM {1} u " +
                                                              "WHERE u.Id = @Id LIMIT 1", SelectFieldList, TableName);
                        userCheck = _connectionProvider.CurrentConnection.Query <User>(checkUserQuery, new { user.Id }).FirstOrDefault();
                        return userCheck == null ? UpdateResult.ItemNotExists : UpdateResult.Stalled;
                    }

                    String query = string.Format(CultureInfo.InvariantCulture, "UPDATE {1} SET {0} WHERE Id=@Id", UpdateFieldList, TableName);
                    _connectionProvider.CurrentConnection.Execute(query, new { user.Email, user.Name, user.Password, user.Locale, user.TimeZone, user.Id });

                    String idAndStampQuery = string.Format(CultureInfo.InvariantCulture, "SELECT id AS Id, stamp AS Stamp FROM {0} WHERE id=@Id;", TableName);
                    IdAndStamp idAndStamp = _connectionProvider.CurrentConnection.Query <IdAndStamp>(idAndStampQuery, new { user.Id }).FirstOrDefault();

                    if (idAndStamp == null)
                    {
                        throw new MonsterDbException("User update failed");
                    }

                    user.Id = idAndStamp.Id;
                    user.Stamp = idAndStamp.Stamp;
                    return UpdateResult.Success;
                });
            }));
        }