2025-05-07 14:12:53 +08:00

70 lines
1.6 KiB
Go

package system
import (
"context"
"management/internal/erpserver/model/dto"
"management/internal/erpserver/model/system"
"management/internal/erpserver/repository"
)
type configRepository struct {
repo *repository.Repository
}
func NewConfigRepository(repo *repository.Repository) system.ConfigRepository {
return &configRepository{
repo: repo,
}
}
func (r *configRepository) Create(ctx context.Context, obj *system.Config) error {
return r.repo.DB(ctx).Create(obj).Error
}
func (r *configRepository) Update(ctx context.Context, obj *system.Config) error {
return r.repo.DB(ctx).Save(obj).Error
}
func (r *configRepository) Get(ctx context.Context, id int32) (*system.Config, error) {
var obj system.Config
err := r.repo.DB(ctx).First(&obj, id).Error
if err != nil {
return nil, err
}
return &obj, nil
}
func (r *configRepository) GetByKey(ctx context.Context, key string) (*system.Config, error) {
var obj system.Config
err := r.repo.DB(ctx).Where("key = ?", key).First(&obj).Error
if err != nil {
return nil, err
}
return &obj, nil
}
func (r *configRepository) List(ctx context.Context, q dto.SearchDto) ([]*system.Config, int64, error) {
query := r.repo.DB(ctx).
Model(&system.Config{}).
Where("created_at BETWEEN ? AND ?", q.SearchTimeBegin, q.SearchTimeEnd)
var count int64
err := query.Count(&count).Error
if err != nil {
return nil, 0, err
}
var configs []*system.Config
err = query.
Order("id DESC").
Offset((q.Page - 1) * q.Rows).
Limit(q.Rows).
Find(&configs).
Error
if err != nil {
return nil, 0, err
}
return configs, count, nil
}