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; })); }
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; })); }
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; })); }
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; })); }
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; }); })); }