package customer import ( "context" "fmt" "gorm.io/gorm" ) type Profile struct { ID int64 FirstName string LastName string Email string } type Service struct { db *gorm.DB prefix string } func NewService(db *gorm.DB, prefix string) *Service { return &Service{db: db, prefix: prefix} } func (s *Service) GetByID(ctx context.Context, id int64) (*Profile, error) { var profile Profile query := fmt.Sprintf("SELECT id_customer AS id, firstname AS first_name, lastname AS last_name, email FROM %scustomer WHERE id_customer = ? LIMIT 1", s.prefix) result := s.db.WithContext(ctx).Raw(query, id).Scan(&profile) if result.Error != nil { return nil, result.Error } if result.RowsAffected == 0 { return nil, gorm.ErrRecordNotFound } return &profile, nil }