Skip to content

Latest commit

 

History

History
 
 

exchange

Exchange

QOR exchange provides conversion (import/export) functionality for any Qor.Resource to CSV file

Usage

import (
  "github.com/qor/qor/exchange"
  "github.com/qor/qor/exchange/backends/csv"
)

// Define resource
product = exchange.NewResource(&Product{}, exchange.Config{PrimaryField: "Code"})
product.Meta(exchange.Meta{Name: "Code"})
product.Meta(exchange.Meta{Name: "Name"})
product.Meta(exchange.Meta{Name: "Price"})

// Define context environment
context := &qor.Context{DB: db}

// Import products.csv into database
product.Import(csv.New("products.csv"), context)

// Export products into products.csv
product.Export(csv.New("products.csv"), context)

Sample products.csv

Code, Name, Price
P001, Product P001, 100
P002, Product P002, 200
P003, Product P003, 300

Advanced Usage

  • Add Validations
product.AddValidator(func(result interface{}, metaValues *resource.MetaValues, context *qor.Context) error {
  if f, err := strconv.ParseFloat(fmt.Sprint(metaValues.Get("Price").Value), 64); err == nil {
    if f == 0 {
      return errors.New("product's price can't be 0")
    }
    return nil
  } else {
    return err
  }
})
  • Process data before save
product.AddProcessor(func(result interface{}, metaValues *resource.MetaValues, context *qor.Context) error {
  product := result.(*Product)
  product.Price = product.Price * 1.1 // Add 10% Tax
  return nil
})