package system import ( "context" "management/internal/erpserver/model/dto" "management/internal/erpserver/model/system" "management/internal/erpserver/repository" ) type auditLogRepository struct { store repository.Store } var _ system.AuditLogRepository = (*auditLogRepository)(nil) func NewAuditLogRepository(store repository.Store) *auditLogRepository { return &auditLogRepository{ store: store, } } func (s *auditLogRepository) Create(ctx context.Context, obj *system.AuditLog) error { return s.store.DB(ctx).Create(obj).Error } func (s *auditLogRepository) List(ctx context.Context, q dto.SearchDto) ([]*system.AuditLog, int64, error) { query := s.store.DB(ctx). Model(&system.AuditLog{}). Where("created_at BETWEEN ? AND ?", q.SearchTimeBegin, q.SearchTimeEnd) if q.SearchEmail != "" { query = query.Where("email LIKE ?", "%"+q.SearchEmail+"%") } var count int64 err := query.Count(&count).Error if err != nil { return nil, 0, err } var logs []*system.AuditLog err = query. Order("id DESC"). Offset((q.Page - 1) * q.Rows). Limit(q.Rows). Find(&logs). Error if err != nil { return nil, 0, err } return logs, count, nil }