| 
									
										
										
										
											2025-06-30 19:21:56 +08:00
										 |  |  | 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 | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2025-07-20 20:53:26 +08:00
										 |  |  | // Repository 仓储接口 | 
					
						
							| 
									
										
										
										
											2025-06-30 19:21:56 +08:00
										 |  |  | type Repository[T any] interface { | 
					
						
							|  |  |  | 	BaseRepository | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	// 基础CRUD操作 | 
					
						
							| 
									
										
										
										
											2025-07-13 16:36:20 +08:00
										 |  |  | 	Create(ctx context.Context, entity T) (T, error) | 
					
						
							| 
									
										
										
										
											2025-06-30 19:21:56 +08:00
										 |  |  | 	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 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2025-07-20 20:53:26 +08:00
										 |  |  | 	// 列表查询 | 
					
						
							| 
									
										
										
										
											2025-06-30 19:21:56 +08:00
										 |  |  | 	List(ctx context.Context, options ListOptions) ([]T, error) | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | // 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 | 
					
						
							|  |  |  | } |