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 }