Advertisement
Guest User

Untitled

a guest
Nov 9th, 2015
127
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Go 1.58 KB | None | 0 0
  1. func readProductByTitle(db *sql.DB, title string) {
  2.     // read product itself
  3.     product := &Product{}
  4.     rows, err := db.Query(fmt.Sprintf("SELECT * FROM product WHERE title = '%v'", title))
  5.    
  6.     if err != nil {
  7.         panic(err)
  8.     }
  9.    
  10.     rows.Next()
  11.     rows.Scan(&product.Id, &product.Category, &product.Title, &product.Cost)
  12.    
  13.     // read datasheets
  14.     rows.Close()
  15.     datasheets := make([]Datasheet, 0)
  16.     rows, err = db.Query(fmt.Sprintf("SELECT id, title, text, sort FROM datasheet WHERE product = %v ORDER BY sort", product.Id))
  17.    
  18.     if err != nil {
  19.         panic(err)
  20.     }
  21.    
  22.     for rows.Next() {
  23.         datasheet := Datasheet{}
  24.        
  25.         if err := rows.Scan(&datasheet.Id, &datasheet.Title, &datasheet.Text, &datasheet.Sort); err != nil {
  26.             panic(err)
  27.         }
  28.        
  29.         datasheets = append(datasheets, datasheet)
  30.     }
  31.    
  32.     product.Datasheets = datasheets
  33.    
  34.     // read reviews
  35.     rows.Close()
  36.     reviews := make([]Review, 0)
  37.     // FIXME: read "created" timestamp
  38.     rows, err = db.Query(fmt.Sprintf("SELECT r.id, r.author, u.email, r.title, r.text FROM review r JOIN user u ON u.id = r.author WHERE r.product = %v", product.Id))
  39.     defer rows.Close()
  40.    
  41.     if err != nil {
  42.         panic(err)
  43.     }
  44.    
  45.     for rows.Next() {
  46.         review := Review{}
  47.        
  48.         if err := rows.Scan(&review.Id, &review.AuthorId, &review.Author, &review.Title, &review.Text); err != nil {
  49.             panic(err)
  50.         }
  51.        
  52.         reviews = append(reviews, review)
  53.     }
  54.    
  55.     product.Reviews = reviews
  56.    
  57.     log.Printf("ID: %v, category: %v, title: %v, cost: %v", product.Id, product.Category, product.Title, product.Cost)
  58.     printDatasheets(&product.Datasheets)
  59.     printReviews(&product.Reviews)
  60. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement