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:

Entity Object

For the definition of Query, check:

Query Object

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?