package interfaces import ( "context" "time" ) // Entity 通用实体接口 type Entity interface { GetID() string GetCreatedAt() time.Time GetUpdatedAt() time.Time } // BaseRepository 基础仓储接口 type BaseRepository interface { // 基础操作 Delete(ctx context.Context, id string) error Count(ctx context.Context, options CountOptions) (int64, error) Exists(ctx context.Context, id string) (bool, error) // 软删除支持 SoftDelete(ctx context.Context, id string) error Restore(ctx context.Context, id string) error } // Repository 通用仓储接口,支持泛型 type Repository[T any] interface { BaseRepository // 基础CRUD操作 Create(ctx context.Context, entity T) error GetByID(ctx context.Context, id string) (T, error) Update(ctx context.Context, entity T) error // 批量操作 CreateBatch(ctx context.Context, entities []T) error GetByIDs(ctx context.Context, ids []string) ([]T, error) UpdateBatch(ctx context.Context, entities []T) error DeleteBatch(ctx context.Context, ids []string) error // 查询操作 List(ctx context.Context, options ListOptions) ([]T, error) // 事务支持 WithTx(tx interface{}) Repository[T] } // ListOptions 列表查询选项 type ListOptions struct { Page int `json:"page"` PageSize int `json:"page_size"` Sort string `json:"sort"` Order string `json:"order"` Filters map[string]interface{} `json:"filters"` Search string `json:"search"` Include []string `json:"include"` } // CountOptions 计数查询选项 type CountOptions struct { Filters map[string]interface{} `json:"filters"` Search string `json:"search"` } // CachedRepository 支持缓存的仓储接口 type CachedRepository[T Entity] interface { Repository[T] // 缓存操作 InvalidateCache(ctx context.Context, keys ...string) error WarmupCache(ctx context.Context) error GetCacheKey(id string) string }