feat(repository): 添加通用基础仓库及具体实体仓库实现
- 新增 core.BaseRepo 泛型仓库,提供增删改查基本操作方法 - 实现 Insert、SelectById、List、Update 和 Delete 方法,支持上下文传递 - 新增 ChannelRepo、ModelRepo 和 APIKeyRepo,均基于 BaseRepo 实现 - 规范化仓库结构,提升代码复用性和维护性 - 支持对不同模型的统一数据访问接口设计
This commit is contained in:
@@ -27,3 +27,22 @@ type BaseRepo[T any] struct {
|
||||
func (repo *BaseRepo[T]) Insert(ctx context.Context, record *T) error {
|
||||
return repo.db.WithContext(ctx).Create(record).Error
|
||||
}
|
||||
|
||||
func (repo *BaseRepo[T]) SelectById(ctx context.Context, id int64) (*T, error) {
|
||||
var result T
|
||||
return &result, repo.db.WithContext(ctx).First(&result, id).Error
|
||||
}
|
||||
|
||||
func (repo *BaseRepo[T]) List(ctx context.Context) ([]*T, error) {
|
||||
var results []*T
|
||||
return results, repo.db.WithContext(ctx).Find(&results).Error
|
||||
}
|
||||
|
||||
func (repo *BaseRepo[T]) Update(ctx context.Context, record *T) error {
|
||||
return repo.db.WithContext(ctx).Save(record).Error
|
||||
}
|
||||
|
||||
func (repo *BaseRepo[T]) Delete(ctx context.Context, id int64) error {
|
||||
var model T
|
||||
return repo.db.WithContext(ctx).Delete(&model, id).Error
|
||||
}
|
||||
|
||||
@@ -0,0 +1,10 @@
|
||||
package repository
|
||||
|
||||
import (
|
||||
"synoth.com/janus/internal/core"
|
||||
"synoth.com/janus/internal/model"
|
||||
)
|
||||
|
||||
type APIKeyRepo struct {
|
||||
core.BaseRepo[model.APIKey]
|
||||
}
|
||||
@@ -0,0 +1,10 @@
|
||||
package repository
|
||||
|
||||
import (
|
||||
"synoth.com/janus/internal/core"
|
||||
"synoth.com/janus/internal/model"
|
||||
)
|
||||
|
||||
type ChannelRepo struct {
|
||||
core.BaseRepo[model.Channel]
|
||||
}
|
||||
@@ -0,0 +1,10 @@
|
||||
package repository
|
||||
|
||||
import (
|
||||
"synoth.com/janus/internal/core"
|
||||
"synoth.com/janus/internal/model"
|
||||
)
|
||||
|
||||
type ModelRepo struct {
|
||||
core.BaseRepo[model.Model]
|
||||
}
|
||||
Reference in New Issue
Block a user