fixes + db changes (#204)

* fixes + db changes

* make duration more lenient
This commit is contained in:
tobi 2021-09-10 14:36:10 +02:00 committed by GitHub
commit e681aac589
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
16 changed files with 401 additions and 78 deletions

View file

@ -62,12 +62,13 @@ type Basic interface {
// The given interface i will be set to the result of the query, whatever it is. Use a pointer or a slice.
Put(ctx context.Context, i interface{}) Error
// UpdateByID updates i with id id.
// UpdateByPrimaryKey updates all values of i based on its primary key.
// The given interface i will be set to the result of the query, whatever it is. Use a pointer or a slice.
UpdateByID(ctx context.Context, id string, i interface{}) Error
UpdateByPrimaryKey(ctx context.Context, i interface{}) Error
// UpdateOneByID updates interface i with database the given database id. It will update one field of key key and value value.
UpdateOneByID(ctx context.Context, id string, key string, value interface{}, i interface{}) Error
// UpdateOneByPrimaryKey sets one column of interface, with the given key, to the given value.
// It uses the primary key of interface i to decide which row to update. This is usually the `id`.
UpdateOneByPrimaryKey(ctx context.Context, key string, value interface{}, i interface{}) Error
// UpdateWhere updates column key of interface i with the given value, where the given parameters apply.
UpdateWhere(ctx context.Context, where []Where, key string, value interface{}, i interface{}) Error

View file

@ -95,7 +95,7 @@ func (b *basicDB) DeleteWhere(ctx context.Context, where []db.Where, i interface
return b.conn.ProcessError(err)
}
func (b *basicDB) UpdateByID(ctx context.Context, id string, i interface{}) db.Error {
func (b *basicDB) UpdateByPrimaryKey(ctx context.Context, i interface{}) db.Error {
q := b.conn.
NewUpdate().
Model(i).
@ -105,7 +105,7 @@ func (b *basicDB) UpdateByID(ctx context.Context, id string, i interface{}) db.E
return b.conn.ProcessError(err)
}
func (b *basicDB) UpdateOneByID(ctx context.Context, id string, key string, value interface{}, i interface{}) db.Error {
func (b *basicDB) UpdateOneByPrimaryKey(ctx context.Context, key string, value interface{}, i interface{}) db.Error {
q := b.conn.NewUpdate().
Model(i).
Set("? = ?", bun.Safe(key), value).

View file

@ -64,6 +64,40 @@ func (suite *BasicTestSuite) TestGetAllNotNull() {
}
}
func (suite *BasicTestSuite) TestUpdateOneByPrimaryKeySetEmpty() {
testAccount := suite.testAccounts["local_account_1"]
// try removing the note from zork
err := suite.db.UpdateOneByPrimaryKey(context.Background(), "note", "", testAccount)
suite.NoError(err)
// get zork out of the database
dbAccount, err := suite.db.GetAccountByID(context.Background(), testAccount.ID)
suite.NoError(err)
suite.NotNil(dbAccount)
// note should be empty now
suite.Empty(dbAccount.Note)
}
func (suite *BasicTestSuite) TestUpdateOneByPrimaryKeySetValue() {
testAccount := suite.testAccounts["local_account_1"]
note := "this is my new note :)"
// try updating the note on zork
err := suite.db.UpdateOneByPrimaryKey(context.Background(), "note", note, testAccount)
suite.NoError(err)
// get zork out of the database
dbAccount, err := suite.db.GetAccountByID(context.Background(), testAccount.ID)
suite.NoError(err)
suite.NotNil(dbAccount)
// note should be set now
suite.Equal(note, dbAccount.Note)
}
func TestBasicTestSuite(t *testing.T) {
suite.Run(t, new(BasicTestSuite))
}