diff --git a/internal/core/base_repository.go b/internal/core/base_repository.go index 395a3bf..d549953 100644 --- a/internal/core/base_repository.go +++ b/internal/core/base_repository.go @@ -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 +} diff --git a/internal/repository/api_key_repo.go b/internal/repository/api_key_repo.go new file mode 100644 index 0000000..0af53dd --- /dev/null +++ b/internal/repository/api_key_repo.go @@ -0,0 +1,10 @@ +package repository + +import ( + "synoth.com/janus/internal/core" + "synoth.com/janus/internal/model" +) + +type APIKeyRepo struct { + core.BaseRepo[model.APIKey] +} diff --git a/internal/repository/channel_repo.go b/internal/repository/channel_repo.go new file mode 100644 index 0000000..891a7cf --- /dev/null +++ b/internal/repository/channel_repo.go @@ -0,0 +1,10 @@ +package repository + +import ( + "synoth.com/janus/internal/core" + "synoth.com/janus/internal/model" +) + +type ChannelRepo struct { + core.BaseRepo[model.Channel] +} diff --git a/internal/repository/model_repo.go b/internal/repository/model_repo.go new file mode 100644 index 0000000..6208ce9 --- /dev/null +++ b/internal/repository/model_repo.go @@ -0,0 +1,10 @@ +package repository + +import ( + "synoth.com/janus/internal/core" + "synoth.com/janus/internal/model" +) + +type ModelRepo struct { + core.BaseRepo[model.Model] +}