CRUD
Definition
After creating the transaction manager, we can create a TxDataAccess for each entity for CRUD operations:
userDataAccess := rdb.NewTxDataAccess[UserEntity](tm)The method NewTxDataAccess returns a TxDataAccess instance, which consists of the DataAccess interface for CRUD operations and the TransactionManager interface for transaction operations.
package core
type DataAccess[E Entity] interface {
Get(ctx context.Context, id any) (*E, error)
Delete(ctx context.Context, id any) (int64, error)
Query(ctx context.Context, query Query) ([]E, error)
Count(ctx context.Context, query Query) (int64, error)
DeleteByQuery(ctx context.Context, query Query) (int64, error)
Page(ctx context.Context, query Query) (PageList[E], error)
Create(ctx context.Context, entity *E) (int64, error)
CreateMulti(ctx context.Context, entities []E) (int64, error)
Update(ctx context.Context, entity E) (int64, error)
Patch(ctx context.Context, entity E) (int64, error)
PatchByQuery(ctx context.Context, entity E, query Query) (int64, error)
}
type TxDataAccess[E Entity] interface {
TransactionManager
DataAccess[E]
}
type PageList[D any] struct {
List []D `json:"list"`
Total int64 `json:"total"`
}The parameter ctx can be a normal context.Context or a TransactionContext for transactions.
For the definition of Entity, check:
For the definition of Query, check:
Usages
The following examples are based on UserEntity and UserQuery:
Get
Query
Count
Page
Delete
DeleteByQuery
Create
CreateMulti
Update
Update all fields by id.
Patch
Update non-nil fields by id.
PatchByQuery
Update non-nil fields by query conditions.
Last updated
Was this helpful?